axis2 webservice 调用的三种方式

2014-11-24 08:36:57 · 作者: · 浏览: 0
package testClick.src.test;

import javax.xml.namespace.QName;

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;
import org.apache.axis2.rpc.client.RPCServiceClient;
import org.junit.Test;

import testClick.src.testclick.HelloWebService;
import testClick.src.testclick.HelloWebServicePortType;

public class TestWebservice {

	@Test
	public void Test(){
		//testClient();
		//testRPC();
		testOMElement();
	}
	
	/**
	 * 第一种
	 * MyEclipse 生成客户端方式
	 */
	public void testClient(){
		HelloWebService service = new HelloWebService();
		HelloWebServicePortType portType = service.getHelloWebServiceHttpSoap11Endpoint();
		String result = portType.sayHello("jack");
		System.out.println(result);
	}
	
	/**
	 * 	第二种
	 *  使用axis2 RPC调用webservice 需要导入相应的jar包
	 */
	public void testRPC(){
		try{
			RPCServiceClient client = new RPCServiceClient();
			Options options = client.getOptions();
			String url = "http://localhost:8080/axis2/services/HelloWebService wsdl";
			EndpointReference end = new EndpointReference(url);
			options.setTo(end);
			
			Object[] obj = new Object[]{"tom"};
			 Class< >
[] classes = new Class[] { String.class }; QName qname = new QName("http://testClick", "sayHello"); String result = (String) client.invokeBlocking(qname, obj,classes)[0]; System.out.println(result); }catch(AxisFault e){ e.printStackTrace(); } } /** * 第三种 * @throws AxisFault */ public void testOMElement(){ try{ ServiceClient sc = new ServiceClient(); Options opts = new Options(); String url = "http://localhost:8080/axis2/services/HelloWebService wsdl"; EndpointReference end = new EndpointReference(url); opts.setTo(end); opts.setAction("sayHello"); sc.setOptions(opts); OMFactory fac = OMAbstractFactory.getOMFactory(); OMNamespace omNs = fac.createOMNamespace("http://testClick", ""); OMElement method = fac.createOMElement("sayHello",omNs); OMElement value = fac.createOMElement("name",omNs); value.setText("admin"); method.addChild(value); OMElement res = sc.sendReceive(method); res.getFirstElement().getText(); System.out.println(res.getFirstElement().getText()); }catch(AxisFault e){ e.printStackTrace(); } } }