自己写axis2调用webservice的代码
首先当然要下载axis2的JAR包,导入工程,这里我们可以从网上下载eclipse插件来自动生成客户端代码,但有些情况下,比如需要调用大量的接口,如果采用这种方式的话管理起来将会很麻烦,这里介绍一下怎么来自己写客户端调用接口。
?
import org.apache.axiom.om.OMAbstractFactory; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.OMFactory; import org.apache.axiom.om.OMNamespace; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.ServiceClient; public class CallWebservice { private void invokeWebService(){ try{ //定义接口地址,这里最好把结尾的?wsdl去掉 String soapBindingAddress = "http://localhost:9139/axis2/services/test"; EndpointReference endpointReference = new EndpointReference(soapBindingAddress); //创建一个OMFactory,下面的namespace、方法与参数均需由它创建 OMFactory factory = OMAbstractFactory.getOMFactory(); //创建命名空间,如果你调用的的WebService指定了targetNamespace这个属性的话,这儿要写上 OMNamespace namespace = factory.createOMNamespace("http://www.wbw.com", ""); //创建参数,可以为多个,这里的命名要与wsdl文件里的命名一致 OMElement nameElement = factory.createOMElement("ReqMsg", namespace); //把变量绑定到参数,也可以用nameElement.setText("test"); nameElement.addChild(factory.createOMText(nameElement, "test")); //创建方法,对应接口方法名,其中"test"为方法名 OMElement method = factory.createOMElement("test", namespace); //把参数绑定到方法 method.addChild(nameElement); //创建客户端实例 ServiceClient sender = new ServiceClient(); //绑定EndpointReference sender.getOptions().setTo(endpointReference); //这里设定为不检查可以避免EOF错误提示 sender.getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, Boolean.FALSE); method.build(); //看看发送的是什么 System.out.println(method.toString()); //发送并得到结果,至此,调用成功,并得到了结果 OMElement result = sender.sendReceive(method); //把结果转化为字符串查看结果 System.out.println(result.toString()); } catch (AxisFault ex){ ex.printStackTrace(); } } public static void main(String[] args){ CallWebservice cw = new Test2(); cw.invokeWebService(); } }
?
如在调用中出现问题,欢迎留言讨论
?