Heim > Datenbank > MySQL-Tutorial > axis2客户端调用免费的webservice服务的实例之三axis2使用RPC方

axis2客户端调用免费的webservice服务的实例之三axis2使用RPC方

WBOY
Freigeben: 2016-06-07 15:15:18
Original
1108 Leute haben es durchsucht

前面两节我们分别说了调用webservice的两种方式: 1.axis2客户端调用免费的webservice服务的实例之一通过wsdl生成客户端程序并本地调用 2 . axis2客户端调用免费的webservice服务的实例之二纯手动调用免费天气预报webservice服务 下面我们介绍一下第三种方式

前面两节我们分别说了调用webservice的两种方式:

1.axis2客户端调用免费的webservice服务的实例之一通过wsdl生成客户端程序并本地调用

2.axis2客户端调用免费的webservice服务的实例之二纯手动调用免费天气预报webservice服务

下面我们介绍一下第三种方式:axis2使用RPC方式调用网上免费WebService 

这种方式类似第二种方式,只是用到的类不同,但是这种方式感觉容易出问题。不多说,直接上代码

<span style="color:#3b5998;">package com.yy.test;

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;

//</span><span style="color:#ff6600;">使用webservice无参数的方法:getRegionProvince</span>
Nach dem Login kopieren
public class Test2 {
	public static void main(String args[]) throws AxisFault{  
	    //使用RPC方式调用WebService   	
	    RPCServiceClient serviceClient = new RPCServiceClient();  
	    Options options = serviceClient.getOptions();  
	    //指定调用WebService的URL  
	    EndpointReference targetEPR = new EndpointReference(  
	            "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");  
	    options.setTo(targetEPR);  
	    options.setAction("http://WebXml.com.cn/getRegionProvince");
	    //指定方法的参数值  
	    Object[] opAddEntryArgs = new Object[] {};  
	    //指定要调用的方法及WSDL文件的命名空间  
	    QName opAddEntry = new QName("http://WebXml.com.cn/", "getRegionProvince");  
	    //调用法并输出该方法的返回值  
	    System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs));
	    /*Object[] result=serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes);
	    for (Object object : result) {
	    	System.out.println(object.toString());
	    }*/
	}
}  
Nach dem Login kopieren
其运行结果:

黑龙江,3113吉林,3114辽宁,3115内蒙古,3116河北,3117河南,3118山东,3119山西,31110江苏,31111安徽,31112陕西,31113宁夏,31114甘肃,31115青海,31116湖北,31117湖南,31118浙江,31119江西,31120福建,31121贵州,31122四川,31123广东,31124广西,31125云南,31126海南,31127新疆,31128西藏,31129台湾,31130北京,311101上海,311102天津,311103重庆,311104香港,311201澳门,311202钓鱼岛,311203


相同的webservive服务,本次使用有参数的方法:getSupportCityString

package com.yy.test;

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;

<a target="_blank" href="http://blog.csdn.net/mingliangniwo/article/details/44202139" style="list-style: none; text-decoration: none; word-break: break-all; word-wrap: break-word; font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif;"></a><pre name="code" class="java"><span style="color:#3b5998;">//</span><span style="color:#ff6600;">使用webservice有参数的方法:getSupportCityString</span>
Nach dem Login kopieren
public class Test2 {public static void main(String args[]) throws AxisFault{  
Nach dem Login kopieren
            //指定调用WebService的URL
	    RPCServiceClient serviceClient2 = new RPCServiceClient();  
	    Options options2 = serviceClient2.getOptions();  
	    //指定调用WebService的URL  
	    EndpointReference targetEPR2 = new EndpointReference(  
	            "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");  
	    options2.setTo(targetEPR2);  
	    options2.setAction("http://WebXml.com.cn/getSupportCityString");
	    //指定方法的参数值  
	    Object[] opAddEntryArgs2 = new Object[] {"北京"};  
	    //指定方法返回值的数据类型的Class对象  
	    Class[] classes2 = new Class[] {String.class};  
	    //指定要调用的方法及WSDL文件的命名空间  
	    QName opAddEntry2 = new QName("http://WebXml.com.cn/", "getSupportCityString");  
	    //调用法并输出该方法的返回值  
	    System.out.println(serviceClient2.invokeBlocking(opAddEntry2, opAddEntryArgs2, classes2));
	}
}  
Nach dem Login kopieren

其运行结果:

axis2客户端调用免费的webservice服务的实例之三axis2使用RPC方


有时还会出现下面这个错误:

axis2客户端调用免费的webservice服务的实例之三axis2使用RPC方


在网上查了好多,都没有什么解决方案,有了答案是让用方式一或方式二的方式

原因:说的都是webservice服务那边的问题。

所以大家可以更多的使用方式一或方式二去webserive开发


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage