在Eclipse中创建了一个新的标准java 7项目,并成功设法获得javax.xml.ws.Service
的实例,如下所示:
String wsdlURL = "http://example.com:3000/v1_0/foo/bar/SomeService?wsdl";
String namespace = "http://foo.bar.com/webservice";
String serviceName = "SomeService";
QName serviceQN = new QName(namespace, serviceName);
Service service = Service.create(new URL(wsdlURL), serviceQN);
这在主方法中运行良好,所以据我所知,该部分有效。但我无法弄清楚如何实际使用它。在SoapUI中,我使用如下所示的请求调用此相同的服务:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://foo.bar.com/webservice">
<soapenv:Header/>
<soapenv:Body>
<web:SomeWebServiceRequest acAccountName="name" acAccountPassword="password">
<SomeRequest>
<id>012345678901234</id>
<action>Fix</action>
</SomeRequest>
</web:SomeWebServiceRequest>
</soapenv:Body>
</soapenv:Envelope>
如何在Java中执行相同的请求?我的目标是我有一长串的这些id
,我需要为每个人运行这样的请求。在SoapUI中手动执行它有点烦人,因此我想使用简单的Java控制台应用程序自动执行它。
答案 0 :(得分:8)
下一步是从您的服务中获取Port
:
Service service = Service.create(new URL(wsdlURL), serviceQN); // this is where you are.
QName portQName = new QName(portNamespace, portName);
YourPortInterface port = service.getPort(portQName, YourPortInterface.class);
YourPortInteface
将在wsimport
期间生成,或者如果您有足够的“阅读”wsdl经验,则可以自己创建和注释。
答案 1 :(得分:2)
您可以将JAX-WS用作客户端。
基本上,您使用wsimport创建包装Web服务的存根java类,然后在Java代码中使用这些存根。 存根处理所有XML转换,包括您的请求和响应。
教程在这里:http://docs.oracle.com/javaee/5/tutorial/doc/bnayn.html
查找名为“简单的JAX-WS客户端”