使用不同框架调用WebService

来源:互联网 发布:知乎回答如何删除 编辑:程序博客网 时间:2024/05/03 21:00

一、使用Axis调用WebService

package client;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

/**
 * 使用Axis1框架调用WebService接口
 * @author Administrator
 *
 */

public class TestAxis1Client {
 
 public static void main(String[] args) throws Exception {
  t1();
 }

 
 private static void t1() throws Exception {
  String url =
   "http://135.33.9.43:9080/mhpools/services/UrgedRepairManager";
  Service service = new Service();
  Call call = (Call) service.createCall();
  call.setTargetEndpointAddress(url);
  call.setOperationName("getRepairedPersons");
  String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
  "<root>"+
   "<data>"+
    "<KM_HURRY_SHEET>"+
     "<ASK_ID>YH-6334-20110908-4580816</ASK_ID>"+
     "<HURRY_NUM>30</HURRY_NUM>"+
     "<HURRY_GRADE>3</HURRY_GRADE>"+
    "</KM_HURRY_SHEET>"+
   "</data>"+
  "</root>";
  String retStr = (String) call.invoke(new Object[] {str});
  System.out.println(retStr);
 }/*Method t1() end*/
 
}/*Class Test end*/

二、使用Axis2框架调用WebService

(1)

package 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 TestAxis2Client2 {
 
 public static void main(String[] args) {
  String url = "http://135.33.9.43:9080/mhpools/services/UrgedRepairManager";
  String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
      "<root>"+
       "<data>"+
        "<KM_HURRY_SHEET>"+
         "<ASK_ID>YH-6334-20110908-4580816</ASK_ID>"+
         "<HURRY_NUM>30</HURRY_NUM>"+
         "<HURRY_GRADE>3</HURRY_GRADE>"+
        "</KM_HURRY_SHEET>"+
       "</data>"+
      "</root>";
  OMFactory fac = OMAbstractFactory.getOMFactory();
  OMNamespace omNs = fac.createOMNamespace("", "");
  OMElement method = fac.createOMElement("getRepairedPersons", omNs);
  OMElement value = fac.createOMElement("Text", omNs);
  value.addChild(fac.createOMText(value, str));
  method.addChild(value);
  //实例化Options对象
  Options options = new Options();
  //设置Options对象的操作事件对象
  options.setAction("urn:getRepairedPersons");
  //设置Options对象的连接终端地址,地址结尾没有?WSDL
  options.setTo(new EndpointReference(url));
  ServiceClient sender;
  OMElement result = null;
  try {
   sender = new ServiceClient();
   sender.setOptions(options);
   result = sender.sendReceive(method);
  } catch (AxisFault e) {
   e.printStackTrace();
  }  
  System.out.println(result.getFirstElement().getText()); 
 }
}

(2)

package client;

import javax.xml.namespace.QName;

import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

/**
 * 使用Axis2框架调用WebService接口
 *
 * @author Administrator
 *
 */
public class TestAxis2Client {
 public static void main(String[] args){
  //webService的调用地址
  String url = "http://135.33.9.43:9080/mhpools/services/UrgedRepairManager";
  String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
      "<root>"+
       "<data>"+
        "<KM_HURRY_SHEET>"+
         "<ASK_ID>YH-6334-20110908-4580816</ASK_ID>"+
         "<HURRY_NUM>30</HURRY_NUM>"+
         "<HURRY_GRADE>3</HURRY_GRADE>"+
        "</KM_HURRY_SHEET>"+
       "</data>"+
      "</root>";
  String result = null;
  //操作的命名空间+“:”+操作名 ,第一个参数可以为空
  QName qname = new QName("", "getRepairedPersons");
  //传递的参数对象集
  Object param[] = new Object[] { str };
  RPCServiceClient client = null;
  OMElement element = null;
  try {
   //实例化远程服务调用客户端对象
   client = new RPCServiceClient();
   //实例化Options对象
   Options options = new Options();
   //设置Options对象的连接终端地址,地址结尾没有?WSDL
   options.setTo(new EndpointReference(url));
   //设置Options对象的操作事件对象
   options.setAction("urn:getRepairedPersons");
   //为远程服务调用客户端对象设置Options子对象
   client.setOptions(options);
   //传递参数,调用服务,获取服务返回结果集
   element = client.invokeBlocking(qname, param);
  } catch (AxisFault e) {
   e.printStackTrace();
  }  
  //获取返回结果集中第一条结果的返回内容
  result = element.getFirstElement().getText();
  System.out.println(result);
 }
}

三、使用CXF框架调用WebService

package client;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

/**
 * 使用CXF框架调用WebService接口
 * @author Administrator
 *
 */
public class TestCXFClient {

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception{

  t1();
 }

 
 public static void t1() throws Exception{
  JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory
    .newInstance();
  String wnmsUrl = "http://135.33.9.43:9080/mhpools/services/UrgedRepairManager?wsdl";
  Client client = clientFactory.createClient(wnmsUrl);
  String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
    "<root>"+
     "<data>"+
      "<KM_HURRY_SHEET>"+
       "<ASK_ID>YH-6334-20110908-4580816</ASK_ID>"+
       "<HURRY_NUM>30</HURRY_NUM>"+
       "<HURRY_GRADE>3</HURRY_GRADE>"+
      "</KM_HURRY_SHEET>"+
     "</data>"+
    "</root>";
  Object[] obj = client.invoke("getRepairedPersons", str);
  String retStr = obj[0].toString();
  System.out.println(retStr);
 }

}

 

原创粉丝点击