webservice 客户端访问



webservice客户端,四种实现方式模式,AXIOM,ADB, XMLBeans , JiBX

其中axiom -- axis2 object model ,AXIOM支持pull式处理。

个人理解为axiom提供一种高效的处理方式,不需要将整个对象加载到内存进行解析方式从而提高处理效率和可选择性。

之前用ServiceClient的方式,在服务运行正常的情况下,由于不知道如何设置各种参数导致以下错误:

org.apache.axis2.AxisFault:服务器未能识别 HTTP SOAPAction的值.

org.apache.axis2.AxisFault:服务器无法处理请求。 --->未将对象引用设置到对象的实例.

 

参考了官方文档的client实现,ADB实现比较简便

Downloads/axis2-1.6.2-docs/axis2-1.6.2/site/docs/quickstartguide.html#deploy说明了四种实现方式.

ADB实现步骤如下:



下载axis2-1.6.2-bin, axis2-1.6.2-war文件

1使用wsdl2java.bat(axis2/bin目录下)生成服务器对应的对象java

2建立新的java工程,将生成的java放入src目录,解压axis2-1.6.2-war文件,

引用\axis2-1.6.2-war\axis2\WEB-INF\lib中的jar

3使用生成文件中的*stub.java,获取相应函数和操作.

 

1生成java对象命令

wsdl2java-uri http://www.webxml.com.cn/webservices/weatherwebservice.asmx?wsdl -d adb -s-ss -sd -ssi –o mybuild

 

-uri可以本机wsdl文件路径或者是网络服务的uri地址

-o (mybuild)对应生成的文件路径,本例生成路径为-bin\axis2-1.6.2\bin\mybuild,内容如下

 


src中的文件拷贝到新建工程中的src目录

红线标注的类为我们要使用的类,新建ADBClient.java

 

import cn.com.webxml.GetSupportCity;
import cn.com.webxml.GetSupportCityResponse;
import cn.com.webxml.WeatherWebServiceStub;

public class ADBClient {

	 public static void main(java.lang.String args[]){
	        try{
	            WeatherWebServiceStub stub =new WeatherWebServiceStub
	                ("http://www.webxml.com.cn/webservices/weatherwebservice.asmx");	  
	            getSupportCity(stub);
	         
	        } catch(Exception e){
	            e.printStackTrace();
	            System.err.println("\n\n\n");
	        }
	    }
	    /* fire and forget */
	    public static void getSupportCity(WeatherWebServiceStub stub){
	        try{
	         
	           GetSupportCity city = new GetSupportCity();
	           city.setByProvinceName("All");
	           GetSupportCityResponse res = stub.getSupportCity(city);
	           
	           String[] str = res.getGetSupportCityResult().getString();
	           int len = str.length;
	           for (int i=0;i<len;i++)
	           {System.out.println(str[i]);}
           
	        } catch(Exception e){
	            e.printStackTrace();
	            System.err.println("\n\n\n");
	        }
	    }	   
}

 

使用这种方式没有提示错误,返回结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值