江湖开发者 | Java粉
网站地图
首页> Java> axis2 调用webservice
2016
05-02

axis2 调用webservice

axis2 调用webservice


axis2调用webservice,rpc调用方式和document调用方式


rpc调用方式

package com.jhkz.client;
 
import javax.xml.namespace.QName;
 
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
 
public class RpcClient {
     
    public static void main(String[] args) throws AxisFault {
        String url ="http://127.0.0.1:8080/webservices-axis2/services/HelloWorld";
        String method ="sayThink";
        String xmlStr="www.jhkz.com";
        String returnXml="";
         
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        EndpointReference targetEPR = new EndpointReference(url);
        options.setTo(targetEPR);
        // 在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名,也就是<wsdl:definitions>元素的targetNamespace属性值
        QName opAddEntry = new QName("http://services.jhkz.com",method);
        // 参数,如果有多个,继续往后面增加即可,不用指定参数的名称
        Object[] opAddEntryArgs = new Object[] {xmlStr};
        // 返回参数类型,这个和axis1有点区别
        // invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名;
        // 第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];
        // 第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。
        // 当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}
        // 如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法,
        // 该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同
        Class[] classes = new Class[] { String.class };
        returnXml=(String)serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
        System.out.println(returnXml); 
    }
 
}

document调用方式

package com.jhkz.client;
 
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.Options;
import org.apache.axis2.client.ServiceClient;
 
public class DocumentClient {
     
    public static void main(String[] args) throws AxisFault {
          String url = "http://127.0.0.1:8080/webservices-axis2/services/HelloWorld?wsdl";  
          Options options = new Options();  
          // 指定调用WebService的URL  
          EndpointReference targetEPR = new EndpointReference(url);  
          options.setTo(targetEPR);  
          // options.setAction("urn:getPrice");  
       
          ServiceClient sender = new ServiceClient();  
          sender.setOptions(options);  
             
             
          OMFactory fac = OMAbstractFactory.getOMFactory();  
          String tns = "http://services.jhkz.com";  
          // 命名空间,有时命名空间不增加没事,不过最好加上,因为有时有事,你懂的  
          OMNamespace omNs = fac.createOMNamespace(tns, "");  
       
          OMElement method = fac.createOMElement("sayThink", omNs);  
          OMElement symbol = fac.createOMElement("ask", omNs);  
          // symbol.setText("1");  
          symbol.addChild(fac.createOMText(symbol, "www.jhkz.com"));  
          method.addChild(symbol);  
          method.build();  
             
          OMElement result = sender.sendReceive(method);  
       
          System.out.println(result);  
          //<ns:sayThinkResponse xmlns:ns="http://services.jhkz.com"><ns:return>www.jhkz.com</ns:return></ns:sayThinkResponse>
    }
}


Java江湖     
全部评论:

表情验证码,看不清楚,换一张

随机文章

云标签

公众号

微信

分享:分享我们的知识;专注:专注个人技术的提升;