JAVA+调用Web+Service的方法

来源:互联网 发布:9158虚拟视频软件 编辑:程序博客网 时间:2024/05/04 15:59
 

1.使用HttpClient
用到的jar文件:commons-httpclient-3.1.jar
方法:
预先定义好Soap请求数据,可以借助于XMLSpy Professional软件来做这一步生成。

String soapRequestData = "<?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>" +
       
" <getCountryCityByIp xmlns=\"http://WebXml.com.cn/\">" +
      "    <theIpAddress>219.137.167.157</theIpAddress>" +
     
"   </getCountryCityByIp>" +
    
"  </soap12:Body>" +
    
"</soap12:Envelope>";

然后定义一个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();

 

soapRequestData就是调用web服务的Soap响应数据,是xml格式的,可以通过解析soapRequestData来获得调用web服务的返回值。

2.使用Xfire
用到的jar文件xfire-all-1.2.4.jar, jdom-1.0.jar
方法:
定义一个Client对象,指定web服务的wsdl的地址

Client c = new Client(new URL(“http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl”));

 

调用Client对象的invoke方法,指定web服务的方法名,和参数,返回值是一个Object型的数组。
下面代码调用getVersionTime方法,这个方法没有参数用所以后一个参数使用new Object[0]。

Object[] results = c.invoke(“getVersionTime”, new Object[0]);

 

3.使用axis2
下载axis2-1.4
方法:
打开控制台,进入axis2-1.4/bin目录

wsdl2java.bat -uri http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl -p ws.clinet.axis2


上述命令执行完后,会在当前目录下生成一个src目录,在src\ ws\ clinet\ axis2目录里生成XXXXCallbackHandler.java和XXXXStub.java两个文件。
wsdl2java 会根据wsdl文件生成web服务的调用接口,参数类,返回值的类。
在调用webservice的时候直接实例化一个XXXXStub的对象,然后调用web服务的方法就可以了。

4. 总结
针对某种工具搭建的Web Service服务可能有与其对应的更简单的调用方法,在这里没有做描述,上述的调用web服务的方法是通用的。
上述三种方法中使用httpclient应该是比较灵活,但是开发效率低,难度大,使用Xfire和axis2比较容易,开发速度快,但是axis2通用性不好,有的web服务用axis2不好用。httpclient和Xfire通用性比较好,鉴于以上特点推荐使用Xfire。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被小狗咬了出血怎么办 被家养小狗咬了怎么办 狗咬了肿起来了怎么办 被家里猫咬出血怎么办 狗跳蚤会传染人怎么办 猫咪被跳蚤咬了怎么办 被老鼠跳蚤咬了怎么办 猫猫身上有跳蚤怎么办 狗被其他狗咬了怎么办 被土狗咬了出血怎么办 狗咬了有点破皮怎么办 遇到咬人的狗怎么办 自己的狗咬伤了怎么办 被蚂蚁咬了很痒怎么办 家里有蚂蚁怎么办能除根 被虫咬了红肿很痒怎么办 身体被虫子咬痒怎么办 手被乌龟咬破了怎么办 被乌龟咬出血了怎么办 被巴西乌龟咬了怎么办 孩子被乌龟咬了怎么办 如果被乌龟咬了怎么办 宝宝被乌龟咬了怎么办 上高中了偏文怎么办 上高中了很烦该怎么办 螳螂生完孩子后怎么办 小区门禁卡丢了怎么办 开门感应卡坏了怎么办 我的螃蟹生卵了怎么办 剑三账号被冻结怎么办 疤痕留下的红印怎么办 马桶刷子沾屎了怎么办 马桶上水管堵了怎么办 孕妇吃了姑娘果怎么办 出差被领导睡了怎么办 智融财富 跑路了怎么办 秒钱要是跑路了怎么办 新买的皮衣皱了怎么办 话说多了伤元气怎么办 话说多了嗓子哑怎么办 桂附地黄丸上火怎么办