【发布时间】:2016-06-30 19:26:02
【问题描述】:
我最近一直在努力用Java 创建一个简单的soap Web 服务客户端。我使用了来自不同 jax-ws 实现的几个工具从 WSDL 生成客户端。即使生成了客户端,每当我尝试调用该服务上的方法时,我都不会收到该方法的结果(调用此类方法后永远不会返回)。
示例代码:
try {
TerytWs1Locator locator = new TerytWs1Locator();
ITerytWs1 service = locator.getcustom();
// If authorization is required
((CustomStub)service).setUsername("XXX");
((CustomStub)service).setPassword("YYY");
// invoke business method
System.out.println(service.czyZalogowany());
} catch (javax.xml.rpc.ServiceException ex) {
ex.printStackTrace();
} catch (java.rmi.RemoteException ex) {
ex.printStackTrace();
}
所以在这种情况下 println 永远不会被调用,因为程序卡在 service.czyZalogowany() 方法上。
我认为可能服务没有运行,所以我在 .NET 中生成了示例客户端:
try
{
var proxy = new ChannelFactory<ServiceReference1.ITerytWs1>("custom");
proxy.Credentials.UserName.UserName = "XXX";
proxy.Credentials.UserName.Password = "YYY";
var result = proxy.CreateChannel();
var test = result.CzyZalogowany();
}catch (Exception ex) { }
而且我可以轻松调用任何具有所需结果的方法。
我的 Java 代码有什么问题?
这是该服务的 wsdl: https://uslugaterytws1test.stat.gov.pl/wsdl/terytws1.wsdl
【问题讨论】:
标签: java web-services soap wsdl