一、Webservice 可以使用的框架很多。AXIS、CXF 、JAX、XFIRE,这些框架都可以根据
wsdl 文件生成 ws 的服务器和客户端代码。
二、Ws 的调用方式有三种,http post、http get、soap post。本人建议使用 http
post,他访问远程 ws 接口的速度比使用 soap post 要快些。象使用 axis 框架实现 soap
post 方式来说,简单的接口还好,对于使用了大量代理类及带有 soaphead 的 ws,且还要在
本地生成一大堆 JAVA 类来和服务端对应。特别如下这种情况,axis 好像无法实现。
Soaphead 如下
<soapHead>
<appId>0039434454</appId>
<pwd>67677</pwd>
</soapHead>
象这种只能根据 org.apache.axis.client.Call.addHead(ElementSoapHead)来增加
报头。但这个报头没有根元素,无法创建一个这种 Element。
下面就如何书写客户端代码详细讲解下。
1.通过发送 http post 请求来调用 ws。
SOAPUI 是个不错的工具,他可以根据 wsdl 文件生成测试例子。另外重要的是,它可以生
成 wsdl 对应的请求报文和响应报文。这样我们在调用别人写的 ws 时,不管多复杂的 ws 都
可以简单的调用。首先按照 SOAPUI 显示的请求报文格式拼装我们的请求报文,使用
java.net.HttpURLConnection 对象来发送 http post 请求。然后使用输出流、输出流
获得响应报文,再用 Element 解析报文得到要取的数据。示例代码如下:
JAVA 类 SoapInvoke:
package test;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class SoapInvoke {
public static void main(String[] args) {
try {
soapSpecialConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void soapSpecialConnection() throws Exception
{
//拼装soap请求报文
StringBuilder sb = new StringBuilder();
StringBuilder soapHeader = new StringBuilder();
soapHeader.append("<soapenv:Envelope
评论3