自己写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(); 
    } 
} 

 

如在调用中出现问题,欢迎留言讨论

 

你可能感兴趣的:(apache,eclipse,webservice)