上一篇文章说的是直接用axis来进行webservice调用,这种方法比较原始,而且容易出错,比如你设置的返回类型如果和wsdl中定义的类型不同的话,就会抛出异常。其实,可以完全屏蔽对底层的操作,而把这些操作留给代理类去实现。代理类一般由开发工具生成,不如JBuilder,wsdl2java这些工具就可以根据wsdl文件生成对应的java类。这样操作代理类进行调用,就方便多了。这里用wsdl2java来举例,看看怎样通过代理调用webservice接口的。
1.获得wsdl2java
wsdl2java是axis2的一个工具,首先到http://ws.apache.org/axis2/download/1_3/download.cgi下载得到axis2的开发包。
2.通过wsdl2java
进入axis2/bin目录,运行wsdl2java -uri xxx.wsdl,这样,就会将wsdl文件转换为对应的java文件。其中包括一个Stub文件和一个CallbackHandler。
3.通过Stub调用webservice接口

public static void callWebService() ...
{
try ...{
//获得Stub实例
CopartnerServiceStub s = new CopartnerServiceStub();
CopartnerServiceStub.CheckUserService srv = new CopartnerServiceStub.CheckUserService();
//设置接口参数
srv.setUserId(WebServiceTest.USER_ID);
srv.setCheckCode(WebServiceTest.CHECK_CODE);
//得到返回值
CheckUserServiceResponse res = s.CheckUserService(srv);
ReturnValue ss = res.getCheckUserServiceResult();
System.out.println(ss.getDescript());

} catch (Exception e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
ok,这样比自己去操作soap要简单多了,而且不会出现soap异常。
本文介绍了一种利用wsdl2java工具简化WebService调用的方法,避免了直接使用axis进行SOAP消息构造可能带来的复杂性和错误。通过生成的代理类(Stub),可以更便捷地调用WebService接口。
1072

被折叠的 条评论
为什么被折叠?



