从Java使用.net WCF服务
我是Java的新手,并且认为在我已经熟悉的.NET WCF服务之上实现客户端应用程序是一个很好的学习练习。
我从最新的JAX-WS( https://jax-ws.java.net/ )运行wsimport.bat来生成客户端代理,但是我仍然坚持认证部分。 WCF服务使用应用程序级别用户名/密码进行身份validation。 我不知道在哪里提供凭证。
在C#中,对于此WCF服务,我只需要添加服务引用,并执行以下操作:
var client = new ServiceClient(); client.ClientCredentials.UserName.UserName = "username"; client.ClientCredentials.UserName.Password = "password"; client.DoSomething();
从Fiddler,调用client.DoSomething()会产生以下请求:
2013-05-20T01:34:28.353Z 2013-05-20T01:39:28.353Z username password
这是我目前正在使用的Java:
SomeService service = new SomeService(); ISomeService port = service.getBasicHttpBindingISomeService(); DoSomethingResponse response = port.getDoSomething();
这会产生以下请求:
它缺少安全节点,因此我不确定如何在Java端设置它。 我错过了什么?
我不是百分之百地使用JAX-WS,如果有更好的替代方案来满足我的需求。 但是,无法修改WCF服务以重新配置,因为它无法实现。
WSDL:
我在Windows 8 x64上使用最新的JDK
您需要从Java客户端创建自定义CallbackHandler。 我不是Java方面的专家,但我知道我的一些客户使用Metro库与我的WCF Web服务进行通信。
尝试搜索创建带/不带Metro库的CallbackHandler。
您可以从这里下载Metro库 。
我建议的一个例子 。