> 데이터 베이스 > MySQL 튜토리얼 > axis2客户端调用免费的webservice服务的实例之三axis2使用RPC方

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

WBOY
풀어 주다: 2016-06-07 15:15:18
원래의
1095명이 탐색했습니다.

前面两节我们分别说了调用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>
로그인 후 복사
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());
	    }*/
	}
}  
로그인 후 복사
其运行结果:

黑龙江,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>
로그인 후 복사
public class Test2 {public static void main(String args[]) throws AxisFault{  
로그인 후 복사
            //指定调用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));
	}
}  
로그인 후 복사

其运行结果:

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


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

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


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

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

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


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿