Java 常调用的Webservice接口的方法_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 9442 | 回复: 1   主题:  Java 常调用的Webservice接口的方法        下一篇 
    本主题由 蜀山战纪 于 2016-2-3 16:20:11 取消置顶
司Moon
注册用户
等级:下士
经验:154
发帖:1
精华:1
注册:2015-10-20
状态:离线
发送短消息息给司Moon 加好友    发送短消息息给司Moon 发消息
发表于: IP:您无权察看 2015-12-11 14:38:40 | [全部帖] [楼主帖] 楼主

WebService是基于Web的服务,WebService使用SOAP协议实现跨编程语言和跨操作系统平台,接收和响应外部系统的某种请求,从而实现远程调用。WebService

采用HTTP协议传输数据,采用XML格式封装数据,SOAP协议=HTTP协议+XML数据格式。主要解决不了不同的系统或者调用分布部署的处理数据项目返回的接口。

 

最近自己在项目中,调用webService接口常用到两种方法,自己觉得也比较好用,在这里记录一下。


第一种,采用httpclient 请求。这种跟我们经常用的HTTP请求一样,结果可以是返回XML格式的字符串,我们比较容易对其进行解析,取得我们想要的数据。


调用的方法是:GetCityForecastByZIP   方法参数是: ZIP

 

需要的JAR如下:

  commons-codec-1.4.jar

 

  commons-httpclient-3.1.jar

 

  jsoup-1.6.2.jar

 

  commons-logging-1.0.4.jar

 

代码:

InputStream is = null;
      HttpClient client = new HttpClient();
PostMethod method = new PostMethod("www.xxx.com/WeatherWSS/Weather.asmx/GetCityForecastByZIP");
method.setRequestHeader("Host", "www.xxx.com");
method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
method.setParameter("ZIP", "90001");
try {
client.executeMethod(method);
is = method.getResponseBodyAsStream();
Document document = Jsoup.parse(is,"gbk","");
System.err.println(document);
} catch (Exception e) {
e.printStackTrace();
}finally{
method.releaseConnection();
try {
if(is!=null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}

 

我这边 document  是返回XML格式的形式,可以对进行处理,获取我们想要的数据。

 

如图:

       

      

               

 

第二种:采用axis2来调用。这种 axis2通用性不好,有的web服务用axis2不好用。

 

调用的方法是:GetCityForecastByZIP   方法参数是: ZIP

 

需要的JAR如下:

 

  axis-ant.jar

  axis.jar

  commons-discovery-0.2.jar

  commons-logging-1.0.4.jar

  jaxrpc.jar

  wsdl4j-1.5.1.jar

 

代码:

try{
 
        // 指出service所在URL       
        String endpoint = "http://www.xxx.com/WeatherWS/Weather.asmx";  
      String targetNamespace = "http://www.xxx.com/WeatherWS/";
         String method="GetCityForecastByZIP";
        // 创建一个服务(service)调用(call)       
        Service service = new Service();  
        Call call = (Call) service.createCall();// 通过service创建call对象       
  
        // 设置service所在URL       
        call.setTargetEndpointAddress(new java.net.URL(endpoint));  
        call.setOperationName(new QName(targetNamespace, method));
        call.setUseSOAPAction(true);
        call.addParameter(new QName(targetNamespace,"ZIP"), org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);//接口的参数
        //call.setReturnClass(org.w3c.dom.Element.class); 
        call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型  
     //String path = targetNamespace + method;
//call.setSOAPActionURI(path);
        Object ret = call.invoke(new Object[] {"90001"});  
        System.out.println("xx==="+ret.toString()); 
}catch(Exception e){
e.printStackTrace();
}

         


我比较经常使用httpclient 请求。也可以使用WSDL2JAVA把WSDL文件转为本地的服务类,然后可以直接调用。







                                                                                                                      --转自



赞(0)    操作        顶端 
nengqiang.wang
注册用户
等级:中校
经验:1658
发帖:34
精华:0
注册:1970-1-1
状态:离线
发送短消息息给nengqiang.wang 加好友    发送短消息息给nengqiang.wang 发消息
发表于: IP:您无权察看 2015-12-25 14:22:36 | [全部帖] [楼主帖] 2  楼


人们都向往和寻找快乐,其实快乐就是一种心情,秘密隐藏于人的心中。快乐从不曾远离我们,而是我们远离了快乐。原本单纯的心,一旦复杂起来,快乐和幸福就 会远离而去,烦恼和忧愁就会随之而来。






赞(1)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论