WebService - Client调用(Axis2-RPC)

简介: WebService - Client调用(Axis2-RPC)

采用的免费webservice接口:

http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

客户端代码如下:

package com.web.hh.constroller;
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;
import org.apache.axis2.transport.http.HTTPConstants;
public class ClientWeatherRPC {
    /*
     * 第三种方式,RPC
     */
    public static void main(String[] args) throws AxisFault {
        //使用RPC方式调用WebService         
        RPCServiceClient serviceClient = new RPCServiceClient();    
        Options options = serviceClient.getOptions();    
//        options.setExceptionToBeThrownOnSOAPFault(false);  
        options.setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI); 
        options.setProperty(HTTPConstants.CHUNKED, "false");
        //指定调用WebService的URL    
        EndpointReference targetEPR = new EndpointReference("http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl");    
        options.setTo(targetEPR);    
        options.setAction("http://WebXml.com.cn/getWeather");  
        //指定方法的参数值    
        Object[] opAddEntryArgs = new Object[] {"昌平",""};    
        //指定要调用的方法及WSDL文件的命名空间    
        QName opAddEntry = new QName("http://WebXml.com.cn/", "getWeather");    
        //调用法并输出该方法的返回值    
//        System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs));  
        Object[] result=serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, new Class[]{String.class}); 
        for (Object object : result) { 
            System.out.println(object.toString()); 
        } 
    }
}

运行抛异常:

十一月 02, 2017 2:04:58 下午 org.apache.axis2.deployment.ModuleDeployer deploy
信息: Deploying module: addressing-1.6.2 - file:/F:/soft-install-soft/MavenRep/org/apache/axis2/axis2/1.6.2/axis2-1.6.2.jar
Exception in thread "main" org.apache.axis2.AxisFault: 服务器无法处理请求。 ---> 值不能为空。
参数名: input
    at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:531)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:375)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:421)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
    at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
    at org.apache.axis2.rpc.client.RPCServiceClient.invokeBlocking(RPCServiceClient.java:102)
    at com.web.hh.constroller.ClientWeatherRPC.main(ClientWeatherRPC.java:34)


但是使用Document方式是可以争取获取数据的,这是为什么?

我们查看其wsdl



style=”document” ! 也就是说,该服务下不支持RPC方式(style=”rpc”则可以)!



故,在客户端调用webservice时,需要看wsdl中是否支持RPC方式!

目录
相关文章
|
Apache
HttpClient实现RPC调用
HttpClient实现RPC调用
68 0
|
2月前
|
Java Apache C++
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
Thrift 是一个轻量级、跨语言的远程服务调用框架,由 Facebook 开发并贡献给 Apache。它通过 IDL 生成多种语言的 RPC 服务端和客户端代码,支持 C++、Java、Python 等。Thrift 的主要特点包括开发速度快、接口维护简单、学习成本低和多语言支持。广泛应用于 Cassandra、Hadoop 等开源项目及 Facebook、百度等公司。
别再手写RPC了,Apache Thrift帮你自动生成RPC客户端及服务端代码
|
2月前
|
XML Java Maven
WebService客户端调用的5种常见方式
本文介绍了在Java中创建和调用WebService的方法,包括服务端的搭建、配置类的添加以及客户端的多种调用方式(如使用JDK原生代码、wsimport命令、动态调用、代理工厂及HttpClient)。文中详细展示了每种方法的实现步骤和示例代码,强调了服务端与客户端参数实体类字段的兼容性,并推荐使用代理工厂方式进行调用。
252 0
WebService客户端调用的5种常见方式
|
6月前
|
开发框架 网络协议 Java
RPC调用和HTTP调用的区别你知道吗
RPC调用和HTTP调用的区别你知道吗
|
8月前
|
存储 JSON 数据格式
NVMf RPC接口文件 nvmf_rpc.c
NVMf RPC接口文件 nvmf_rpc.c
|
8月前
|
Java
WebService - Client调用(Axis2-Document)
WebService - Client调用(Axis2-Document)
74 0
|
8月前
|
XML Java 应用服务中间件
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
WebService - Axis2基于JAX-WS开发WebService并发布多个WebService
107 0
|
XML JSON API
使用RPC调用
使用RPC调用
87 1
|
XML JavaScript Java
Axis调用Webservice添加SoupHeader
Axis调用Webservice添加SoupHeader
200 0
Axis调用Webservice添加SoupHeader
|
Web App开发 JavaScript 前端开发