我是webservices的新手。我正在尝试编写一个Java独立客户端,它可以从Web服务获得响应。
我尝试搜索SO和谷歌,但现在我更加困惑。以下是我经历过的广泛链接。
我有一个网址:http://api.something.com/remote/wsdl/SomeEncryptedText
我还有一个SOAP请求:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<AuthUsername>someName@someWhere.com</AuthUsername>
<AuthPassword>mypassword</AuthPassword>
<Sid>12121</Sid>
<DynamicProductFeedsRequest xmlns="http://api.something.com/remote/SomeEncryptedText">
</DynamicProductFeedsRequest>
</soap12:Body>
</soap12:Envelope>
有了这个,我如何编写一个独立的Java客户端,我想在稍后阶段与某些Web应用程序集成?
从前面提到的资源看,有很多软件选择:SoapUI,WSDL2Java,Apache Axis,Maven插件,JAX-WS,Apache CXF。
我在上面提到的一个SO答案中使用了http://www.soapclient.com/soaptest.html,我可以在浏览器上获得一个完美的html / xml文件。
现在我很困惑我应该使用哪个软件?由于我对SOA一无所知,因此链接中的信息几乎没有相关内容,因此我无法相互关联。
有谁能告诉我编写独立Java客户端的高级步骤,该客户端接收WSDL URL和SOAP请求并为其提供输出?
如果我错过任何信息,请告诉我。
答案 0 :(得分:10)
这个问题都取决于以下几点:
基本上,如果您使用Java annotations生成Web服务,那么您将需要与Java 5相关的Web服务库(支持注释)。
有关使用Java Web Services with annotation(JAX-WS)的一些文章:
我将从使用Java生成Web服务客户端开始,不支持支持注释。生成WSDL到Java的众所周知的客户端是Apache Axis(最后一个版本是2006年4月22日发布的1.4)。这基本上采用WSDL定义并将其生成回客户端。如果您使用较新版本的WSDL(1.2和2.0),它支持旧版本的WSDL(1.0)并崩溃。
这基本上做了什么,它需要您的WSDL并生成与您的Web服务通信的Java代理。它可以允许基于RPC和基于XML的通信。
对于支持注释的Java,实际上有两种方法可以做到这一点:
JDK_HOME/bin/
文件夹下)。要使用wsimport,您基本上需要转到shell命令(或编写脚本)并有效地执行此操作:
wsimport -d [outputdir] wsdl_file
,您的java代理将在[outputdir]
文件夹中找到。
wsimport
(我不知道它是否存在于早期版本中)。更多来源here和here。
对于Apache Axis,Apache Axis 2或Apache CXF,有一个WSDL2Java
类文件可以生成源代码。
以下是有关如何在Apache CXF和Apache Axis 2中使用WSDL2Java
的指南。
我希望这会以某种方式帮助你,就像我在工作中花30分钟一样。 : - )