C#调用java-ws(带身份验证功能)
来源:互联网 发布:永宏触摸屏软件 编辑:程序博客网 时间:2024/05/22 13:44
java服务端:
服务接口:
@WebService@SOAPBinding(style = Style.RPC)public interface HelloWorld{@WebMethod String getHelloWorldAsString();}
服务实现:
@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")public class HelloWorldImpl implements HelloWorld{@Resource WebServiceContext wsctx;@Overridepublic String getHelloWorldAsString() {MessageContext mctx = wsctx.getMessageContext(); //提取http header中的属性做权限判断 Map http_headers = (Map) mctx.get(MessageContext.HTTP_REQUEST_HEADERS); List userList = (List) http_headers.get("Username"); List passList = (List) http_headers.get("Password"); String username = ""; String password = ""; if(userList!=null){ //get username username = userList.get(0).toString(); } if(passList!=null){ //get password password = passList.get(0).toString(); } //Should validate username and password with database if (username.equals("mkyong") && password.equals("password")){ return "Hello World JAX-WS - Valid User!"; }else{ return "Unknown User!"; }}}
服务配置
/WebContent/WEB-INF/sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint
name="HelloWorld"
implementation="com.mkyong.ws.HelloWorldImpl"
url-pattern="/hello"/>
</endpoints>
/WebContent/WEB-INF/web.xml
<web-app> <listener> <listener-class> com.sun.xml.ws.transport.http.servlet.WSServletContextListener </listener-class> </listener> <servlet> <servlet-name>hello</servlet-name> <servlet-class> com.sun.xml.ws.transport.http.servlet.WSServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping></web-app>
C#客户端
引用部署在tomcat中java web服务的地址(http://localhsot:8080/WebServices/hello?wsdl)生成代理类,在生成的代理类中重载GetWebRequest方法:
protected override System.Net.WebRequest GetWebRequest(Uri uri) { System.Net.WebRequest request = base.GetWebRequest(uri); request.Headers.Add("Username", "mkyong"); request.Headers.Add("Password", "password"); return request; }
在客户端中调用:
localhost.HelloWorldImplService service = new TestCA.localhost.HelloWorldImplService(); MessageBox.Show(service.getHelloWorldAsString());
如果没有设置username和password或者设置错误,则调用时服务端方法会提示错误:
设置正确提示:
- C#调用java-ws(带身份验证功能)
- Java WS和C#调用
- java 调用ws 方式
- java调用ws服务
- c#调用Java的webservice出现身份验证失败的解决方案
- java自带webservice功能实现Javax.jws.WebService--JAX-WS
- 万能的Java WebService调用程序支持C# JAVA WS调用
- JAVA调用.NET的WS
- C#调用Web Service时的身份验证
- C#调用Web Service时的身份验证
- C#调用Web Service时的身份验证
- C#调用Web Service时的身份验证
- C#调用Web Service时的身份验证
- 用JAX-WS实现java调用webServic
- php使用WS-Security调用java接口
- Java调用C#带soapheader的webservice接口
- 使用telnet登陆smtp服务发邮件(带身份验证)和Base64加密算法源码(java版)
- C#身份验证
- linux下pdf文件中文乱码解决方案
- wap环境搭建 jdk+tomcat
- 经典SQL语句大全
- javascript 将日期格式化为yyyy-MM-dd格式
- container_of 理解
- C#调用java-ws(带身份验证功能)
- ThreadLocal操作
- PowerDesigner概念模型详解
- EditPlus使用技巧
- 日语日常用语100句
- mysql: unrecognized service
- 桥接模式与装饰者模式的区别
- 希尔排序
- 迭代器模式(Iterator Pattern)