如何在不为其创建任何客户端的情况下调用webservice?
问题描述:
我在谷歌搜索,但没有找到任何有用的文章。 我想调用webservice methods.I有wdsl,我必须动态调用,而不创建任何存根,因此任何示例都会更有帮助。如何在不为其创建任何客户端的情况下调用webservice?
答
Soap Ui是一个用于测试生成的Web服务的应用程序。你只需要Wsdl就可以做到这一点。
here是一个链接。
右键单击生成的wsdl> run as>在服务器中运行。
从浏览器的地址栏复制网址。
打开肥皂iu并点击新项目。
将网址粘贴到wsdl列中。
该项目将与方法的名称列出。
展开方法并单击request1。
在“?”中输入值这是该方法的参数。
单击运行按钮。
这是一种嘲笑在不创建客户端的情况下创建的Web服务的方法。肥皂Ui应用程序可以作为客户端工作。 希望这有助于。
答
有趣的问题。经过一些研究,我发现这个项目在github上,似乎满足您的需求。
https://github.com/reficio/soap-ws
下面是从GitHub的网站,这似乎很容易和简单一些示例代码。
使用Web-Serivce在60秒
让我们消耗CurrencyConverter网络服务。得益于流利的构建者,API直观而直观。它需要任何解释吗?欢迎来到soap-ws :)
Wsdl wsdl = Wsdl.parse("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL");
SoapBuilder builder = wsdl.binding()
.localPart("CurrencyConvertorSoap")
.find();
SoapOperation operation = builder.operation()
.soapAction("http://www.webserviceX.NET/ConversionRate")
.find();
Request request = builder.buildInputMessage(operation)
SoapClient client = SoapClient.builder()
.endpointUrl("http://www.webservicex.net/CurrencyConvertor.asmx")
.build();
String response = client.post(request);
有一种叫做REST的方式,它的url基础。我不认为如果你有一个现成的WSDL,你可以在不创建存根的情况下调用WS – vikeng21 2014-10-09 11:39:44
我认为这里有一个关于这个主题的类似帖子:http://stackoverflow.com/questions/2491598/create-on-the -fly-web-service-dynamic-web-service-invoker – VAndrei 2014-10-09 11:44:02
web服务只不过是通过一些传输将xml发送到端点。您可以创建一个包含XML的'String',并使用'HttpUrlConnection'(如果传输是HTTP)将XML发送到端点。您甚至可以使用JAX-WS动态地(在运行时!)为您创建Web服务的代理。不需要额外的库。 – 2014-10-09 12:06:08