`

webservice-document 调用方法

    博客分类:
  • java
阅读更多
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;

/**
 * axis2提供rpc和document两种style的实现。
 * 在这里我们别对其验证。关于说明,请参看代码中的注释
 * @author Administrator
 *
 */
public class CopyOfClient {
	
	public static void main(String[] args) {
		
		CopyOfClient client = new CopyOfClient();
		//测试rpc方式
		//client.testRPC();
		//测试document方式
		//client.testDocument();
		client.testDocument1();
//		client.testSubString();
	}
	
	/**
	 * 应用rpc的方式调用
	 * 这种方式就等于远程调用,即通过url定位告诉远程服务器,告知方法名称,参数等,
	 * 调用远程服务,得到结果。
	 */
	//下面这个annotaion是为了不让代码出现关于没有应用泛型的警告信息
	//用elipse做编辑器的很容易理解。
	@SuppressWarnings("unchecked")
	public void testRPC() {
		try {
			RPCServiceClient serviceClient = new RPCServiceClient();
			Options options = serviceClient.getOptions();
			//指定访问的web service地址
			EndpointReference targetEPR = new EndpointReference(
					"http://localhost:8080/websServiceTest/services/HelloServiceNew");
			options.setTo(targetEPR);

			//指定方法,注意指定命名空间
			QName opPrint = new QName("http://webservice.sinosoft.com","add");
			//确定参数类型和参数值
			Class[] returnTypes = new Class[] { int.class };
			Object obj[] = new Object[] { 1, 2 };
            //得到返回结果,是一个数组
			Object[] order = serviceClient.invokeBlocking(opPrint, obj,
					returnTypes);
			System.out.println(order[0]);
			
			
			//下面是测试each方法的。和上面类似
			opPrint = new QName("http://webservice.sinosoft.com","each");
			returnTypes = new Class[] { String.class };
			obj = new Object[] { "zhangyt" };
			order = serviceClient.invokeBlocking(opPrint, obj,
					returnTypes);
			System.out.println(order[0]);
			
		} catch (AxisFault e) {
			e.printStackTrace();
		}	
	}
	
	/** 
     * 应用document方式调用 
     * 用ducument方式应用现对繁琐而灵活。现在用的比较多。因为真正摆脱了我们不想要的耦合 
     */  
	 public void testDocument() {   
	        try {   
	            ServiceClient sc = new ServiceClient();   
	            Options opts = new Options();   
	            String url = "http://webservice.webxml.com.cn/WebServices/WeatherWebService.asmx";  
	            //确定目标服务地址   
	            opts.setTo(new EndpointReference(url));   
	            //确定调用方法   
	            opts.setAction("http://WebXml.com.cn/getWeatherbyCityName");   
	            OMFactory fac = OMAbstractFactory.getOMFactory();   
		        //指定命名空间   
		        OMNamespace omNs = fac.createOMNamespace("http://WebXml.com.cn/", "");   
		        //指定方法   
		        OMElement method = fac.createOMElement("getWeatherbyCityName",omNs);   
		        //指定方法的参数   
		        OMElement value = fac.createOMElement("theCityName",omNs);    
		        value.setText("天津");    
		        method.addChild(value);    
		        //OMElement value1 = fac.createOMElement("value",omNs);   
		        //value1.setText("2");   
		       //method.addChild(value1);   
	            sc.setOptions(opts);   
	            //发送请求并并得到返回结果,注意参数生成方法的分析   
	            OMElement res = sc.sendReceive(method);   
	            System.out.println(res);  
	            //值得注意的是,返回结果就是一段由OMElement对象封装的xml字符串。   
	            //我们可以对之灵活应用,下面我取第一个元素值,并打印之。因为调用的方法返回一个结果   
	           // res.getFirstElement().getText();   
	           // System.out.println(res.getFirstElement().getText());   
	        } catch (AxisFault e) {   
	            e.printStackTrace();   
	        }   
	    }   
	/** 
	   * 方法二: 应用document方式调用 
	   * 用ducument方式应用现对繁琐而灵活。现在用的比较多。因为真正摆脱了我们不想要的耦合 
	   */  
	  public static void testDocument1() {  
	    try {  
	      // String url = "http://localhost:8080/axis2ServerDemo/services/StockQuoteService";  
	      String url = "http://172.24.254.192/InspectionUp/services/ServiceServerImpl?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://webservice.bjits.org";  
	      // 命名空间,有时命名空间不增加没事,不过最好加上,因为有时有事,你懂的  
	      OMNamespace omNs = fac.createOMNamespace(tns, "");  
	  
	      OMElement method = fac.createOMElement("getResourcesStatus", omNs);  
	      OMElement symbol = fac.createOMElement("type", omNs); 
	      OMElement symbols = fac.createOMElement("name", omNs); 
//	      方法一
	      symbol.addChild(fac.createOMText(symbol, "http")); 
	      symbols.addChild(fac.createOMText(symbols, "webTest"));
//	      方法二  
//	      method.addChild(symbol);  
//	      symbol.setText("1");  
	      method.addChild(symbol); 
//	      
//	      method.addChild(symbols);  
//	      symbols.setText("2");  
	      method.addChild(symbols);  
	      
	      method.build();  
	        
	      OMElement result = sender.sendReceive(method);  
	  
	      System.out.println(result);  
	  
	    } catch (AxisFault axisFault) {  
	      axisFault.printStackTrace();  
	    }  
	  }
	  /** 
	   * 方法二: 应用document方式调用 
	   * 用ducument方式应用现对繁琐而灵活。现在用的比较多。因为真正摆脱了我们不想要的耦合 
	   */  
	  public static void testSubString() {  
	    try {  
	      String url = "http://localhost:8080/websServiceTest/services/HelloServiceNew?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://webservice.sinosoft.com";  
	      // 命名空间,有时命名空间不增加没事,不过最好加上,因为有时有事,你懂的  
	      OMNamespace omNs = fac.createOMNamespace(tns, "");  
	      OMElement method = fac.createOMElement("add", omNs); //指定方法名 
	      String all = "a=2&b=3";//模拟页面的
	      String[] split = all.split("&");//subString根据“&”截取字符窜
	      for(int i=0;i<split.length; i++) {
//	    	  System.out.println(split[i]+"—"); //显示截取后的内容
	    	  String[] splits = split[i].split("=");// 使用=分割字符串 
	    	  for(int a=0;a<splits.length -1; a++) {
	    		  System.out.println(splits[0]+"="+splits[1]); //显示截取后的内容 
	    		  OMElement symbol = fac.createOMElement(splits[0], omNs);//参数名称
	    		  symbol.addChild(fac.createOMText(symbol, splits[1]));//参数的值
	    		  method.addChild(symbol); 
	    	  }
	      } 
//	      OMElement symbol = fac.createOMElement("a", omNs); 
//	      OMElement symbols = fac.createOMElement("b", omNs); 
////	      方法一
//	      symbol.addChild(fac.createOMText(symbol, "1")); 
//	      symbols.addChild(fac.createOMText(symbols, "2"));
////	      方法二  
////	      method.addChild(symbol);  
////	      symbol.setText("1");  
//	      method.addChild(symbol); 
////	      
////	      method.addChild(symbols);  
////	      symbols.setText("2");  
//	      method.addChild(symbols);  
	      method.build();  
	      OMElement result = sender.sendReceive(method);  
	      System.out.println(result);  
	    } catch (AxisFault axisFault) {  
	      axisFault.printStackTrace();  
	    }  
	  }
	private static OMElement OMElement(Object setText) {
		// TODO Auto-generated method stub
		return null;
	}  
}

 

分享到:
评论

相关推荐

    金蝶调用Webservice接口-SOAP

    本文主要介绍如何使用SOAP(Simple Object Access Protocol)方式来调用Webservice接口,以金蝶为例进行详细讲解。 首先,了解SOAP。SOAP是一种基于XML的协议,用于在Web上交换结构化的和类型化的信息。它通过HTTP...

    JAVA 调用SAP SOAP webservice.docx

    JAVA 调用 SAP SOAP webservice 详解 在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP...

    SAP调用外部WebService.docx编程资料

    - 调用了`HELLO_WORLD`方法,并传入了必要的输入参数。 - 捕获了可能发生的异常,并将异常信息输出。 #### 三、注意事项 - 在配置过程中,确保所有的命名都遵循SAP的命名规范。 - SOAP操作的`soapAction`值必须...

    java webService XML document String

    3. **调用WebService**:客户端可以通过生成的客户端代理类(通常由WSDL文件生成)来调用远程的WebService。 4. **SOAP消息**:WebService通常使用SOAP(Simple Object Access Protocol)协议传输数据,其数据格式...

    调用webservice,通过post传参读取返回的XML

    这里我们关注的是如何使用POST方法调用一个WebService,并处理返回的XML响应。我们将探讨以下知识点: 1. **WebService**:WebService是一种基于HTTP协议的分布式计算模型,允许不同系统间的应用进行交互。它通常...

    VB6调用WebService

    3. **调用服务方法**:通过生成的客户端代理类,你可以像调用本地方法一样调用WebService的方法,传递参数并接收返回值。 4. **处理结果**:接收到WebService的响应后,根据数据类型解析返回结果,如XML或JSON,再...

    拼接xml调用webservice

    本主题的核心是"拼接XML调用WebService",这通常指的是通过构建XML字符串来构造请求,然后发送该请求到一个Web Service接口以获取响应。以下是对这个过程的详细解释: 1. **XML基础**:XML是一种结构化标记语言,它...

    C#创建WEBSERVICE、PB调用实例

    2. **编写WebService代码**:在新建的服务类(默认为`Service1.asmx.cs`)中,定义你的方法。例如,你可以创建一个名为`GetXMLData`的方法,该方法将返回一个XML字符串。你需要使用`System.Xml.Linq`库来生成XML文档...

    c#调用java带身份验证webservice

    这个类包含了调用服务所需的方法、属性和事件。 2. **身份验证机制**:在调用Java Web服务时,通常需要提供认证信息。常见的身份验证方式有基本认证(Basic Authentication)、NTLM(NT LAN Manager)认证、...

    C#调用WebService实现天气预报

    本示例中,我们将探讨如何利用C#调用WebService来获取天气预报信息。这个过程涉及到网络通信、XML数据解析以及对第三方API的集成。 首先,我们需要理解WebService的工作原理。WebService是一种基于HTTP协议的远程...

    java调用.net的WebService[借鉴].pdf

    【Java 调用 .NET WebService 基础知识】 在软件开发中,跨平台交互是常见的需求,Java 和 .NET 平台之间的通信可以通过 WebService 实现。本篇将详细讲解如何使用 Java 调用 .NET 开发的 WebService。 1. **...

    webservice-xfire相关(xfire&wsdl4j;&jaxrpc;&jdom;)

    它允许Java方法直接映射到SOAP消息,使得开发人员能够轻松地将Java方法暴露为Web服务,或者调用远程Web服务。JAX-RPC简化了Web服务的编程模型,但已经被JAX-WS取代,后者提供了更现代、更灵活的API。 4. **JDOM**:...

    webservice 动态调用

    在C#环境下,Windows Forms(WinForm)应用可以利用Web服务来扩展其功能,例如通过远程调用Web服务的方法获取或更新数据。本文将深入探讨如何在C# WinForm应用中实现Web服务的动态调用。 首先,让我们理解什么是Web...

    oracle调用webService

    Oracle 调用 WebService Oracle 调用 WebService 是指在 Oracle 数据库中调用 WebService 的过程。WebService 是一种基于 XML 的远程调用协议,能够跨越不同的平台和语言,实现不同系统之间的数据交换和业务逻辑的...

    Delphi调用C#的Webservice返回Dataset

    本话题聚焦于使用Delphi客户端调用由C#编写的Webservice,并接收返回的Dataset,以便进行数据库操作。以下是对这个主题的详细阐述: 首先,我们要理解Delphi和C#是两种不同的编程语言,分别来自Embarcadero ...

    动态调用WebService(C#)

    在C#编程中,动态调用WebService是一种高级技巧,它允许你在运行时根据需要调用不同的Web服务,而不需要在编译时就确定具体的URL或方法。这种灵活性尤其有用,当你需要处理Web服务URL变动或者需要动态选择服务时。...

    JAVA调用webservice并解析xml

    4. **调用服务方法**:通过服务代理,你可以像调用本地方法一样调用Web服务的远程方法,并传递必要的参数。 ```java String result = port.someWebServiceMethod(param1, param2); ``` 5. **解析XML响应**:Web...

    java调用天气预报webservice

    Java调用天气预报WebService是一个常见的任务,特别是在开发集成多种服务的应用程序时。WebService是一种基于XML标准的、平台和语言无关的通信协议,用于在不同系统间交换数据。在这个场景中,我们将探讨如何使用...

Global site tag (gtag.js) - Google Analytics