webservice客户端调用方法总结
1、AXIS调用
{
a、直接调用。{
适合比较那种返回比较简单的数据的service, 比如,天气预报,这些内容肯定可以通过一个很简单的xml来返回。
Service service = new Service() ;
Call call = (Call)service.createCall() ;
call.setTargetEndpointAddress(PntCodeTypeManager.getInstance().getTypeValue("TUXEDO_CONFIG", "URL")) ;
call.setOperationName("orderFlowSumReq") ;
call.addParameter("v-ORDER-FLOW-SUM-XML-REQ",org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN) ;
call.setReturnType(XMLType.XSD_STRING) ;
call.setUseSOAPAction(true) ;
String result = (String) call.invoke(new Object[]{xml}) ;
}
b、通过wsdl2java工具生成调用代码。{
打开控制台,进入axis2-1.4/bin目录
wsdl2java.bat -uri http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl -p ws.clinet.axis2
}
}
2、xfire调用
{
a、通过WSDL地址来创建动态客户端。
{
Client client = new Client(new URL("http://127.0.0.1:8080/XFire_demo/services/XFireServer?wsdl"));
Object[] results11 = client.invoke("sayHello", new Object[]{"Jadyer22"});
System.out.println(results11[0]);
}
b、通过服务端提供的端口来创建客户端
{
/**
* 通过Web服务端提供的接口来创建客户端
* @see 客户端必须提供一个与服务端完全一致的接口,包名也要一致
* @see 在本例中,需要在客户端(即该项目)中提供HelloService.java接口,以及Person和User两个POJO类
* @see 并且此时需要在项目中引入XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries
*/
XFireProxyFactory factory = new XFireProxyFactory();
//通过proxyFactory,使用服务模型serviceModel和服务端点URL(用来获得WSDL)
//得到一个服务的本地代理,这个代理就是实际的客户端
HelloService client = (HelloService)factory.create(serviceModel, serviceURL);
/**
* Invoke the service
* @see 调用服务的本地代理(即实际的客户端)中的方法,便得到我们需要的WebServcie
*/
/*--处理简单对象--*/
String serviceResponse = client.sayHello("Jadyer11");
System.out.println(serviceResponse);
/*--处理对象--*/
User u = new User();
u.setName("Jadyer99");
Person pp = client.getPerson(u);
System.out.println(pp.getName());
/*--处理List--*/
List<Person> personList = client.getPersonList(24, "Jadyer88");
for(Person p : personList){
System.out.println(p.getName());
}
}
c、基于XFire框架利用ant构建WebService的客户端程序 ,
详细配置:可参考博客http://blog.csdn.net/emailed/article/details/4267932
}
3、HttpClient调用
用到的jar文件:commons-httpclient-3.1.jar
{
然后定义一个PostMethod,这时需要指定web服务的Url;
PostMethod postMethod = new PostMethod(“http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx”);
然后把Soap请求数据添加到PostMethod中
byte[] b = soapRequestData.getBytes("utf-8");
InputStream is = new ByteArrayInputStream(b,0,b.length);
RequestEntity re = new InputStreamRequestEntity(is,b.length,"application/soap+xml; charset=utf-8");
postMethod.setRequestEntity(re);
最后生成一个HttpClient对象,并发出postMethod请求
HttpClient httpClient = new HttpClient();
statusCode = httpClient.executeMethod(postMethod);
String soapRequestData = postMethod.getResponseBodyAsString();
}
总结
针对某种工具搭建的Web Service服务可能有与其对应的更简单的调用方法,在这里没有做描述,上述的调用web服务的方法是通用的。
上述三种方法中使用httpclient应该是比较灵活,但是开发效率低,难度大,使用Xfire和axis2比较容易,开发速度快,但是axis2通用性不好,有的web服务用axis2不好用。httpclient和Xfire通用性比较好,鉴于以上特点推荐使用Xfire
常见Webservice客户端调用方式
最新推荐文章于 2022-05-04 10:46:20 发布