文档章节

Java Axis Service 手动调用WebService 入参为NULL

iLinx
 iLinx
发布于 2016/08/16 14:19
字数 341
阅读 98
收藏 0

####环境前提:

  • axis 版本为 1.7
  • ws 采用 jws 发布

ws发布源码

import javax.xml.ws.Endpoint;
/**
 * 服务发布主线程
 */
public class MainPublisher {

	public static void main(String[] args) {
		Endpoint.publish("http://192.168.2.31:9022/services/auth",new HiveWevServer());  
		System.out.println("启动成功");
	}
}

ws服务

import javax.jws.WebService;
/**
 * Webservice Hive查询服务
 * @author linx
 */
@WebService
public class HiveWevServer {
	public String getAuthInfo(String input){
		System.out.println("====== 入参:"+input);
		return "";
	}
}

axis 调用代码

import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/**
 * WebService 接口调用
 * @author linx
 */
@org.springframework.stereotype.Service
public class WsHandlerService {
	/**
	 * 调用WebService 
	 */
	public String authPersionalInfo(String qid,String mobile,String name, String idCard){
		String result = "";
		try{			
			Service service = new Service(); 
			Call call = (Call) service.createCall(); 
			call.setTargetEndpointAddress("http://192.168.2.31:9022/services/auth?wsdl"); 
			call.setOperationName(new QName("http://oper.hive.com/", "getAuthInfo"));//
			call.addParameter("in0", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
			call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//
			result = (String)call.invoke(new Object[]{mobile}); 
		}catch(Exception e){
			e.printStackTrace();
			System.out.println("========Error==========");
		}
		return result;
	}
}

问题

由以上发布的WebService服务,通过axis以上方式调用,ws服务中getAuthInfo的方法始终收到入参为null

解决方法

以下是CSDN查到得有效方案,原贴:CSDN

结合SoapUI分析发现,如果jws通过annotation来发布,或者类似方式,通过axis调用,需要注意两点: 1)在call.setOperationName是必须通过Qname来制定namespaceURI 2)在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义,也不需制定namespaceURI,上述代码 call.addParameter(new QName(namespace, "TransNo"), XMLType.XSD_STRING, ParameterMode.IN); 修改为 call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN); 有几个参数,即设定几个。 提供参考,可测试试验一下。

© 著作权归作者所有

共有 人打赏支持
iLinx
粉丝 0
博文 13
码字总数 3089
作品 0
成都
程序员
私信 提问
Axis开发webservice的简单实例(转)

本文主要记录Axis开发webservice简单实例的详细过程和步骤: Axis官方网站:http://ws.apache.org/axis/ 可以在官网下载最新1.4的包:axis-bin-14.zip 将解压后的axis-14webapps下的axis目录...

颜建海
2014/03/20
0
0
axis2使用开发Webserver

、使用axis1.4调用webservice方法   前提条件:下载axis1.4包和tomcat服务器 ,并将axis文件夹复制到tomcat服务器的webapp文件夹中   这里我就说一下最简单的方法:   首先建立一个任意...

遇见T就不错过
2014/04/15
0
0
axis1 web Service 环境部署

Axis支持三种web service的部署和开发,分别为: 1、Dynamic Invocation Interface(DII) 2、Dynamic Proxy方式 3、Stubs方式 其中:约定AxisHOME为该TOMCATHOMEwebappsAxis目录 在eclipse环境...

继仕zac
2015/07/29
0
0
使用AXIS生成SOAP Web Service客户端的方法

需要准备的工具: JDK 1.5 或以上 AXIS 1.4 从http://labs.renren.com/apache-mirror//ws/axis/14/axis-bin-14.zip下载axis1.4,解压到某个目录(比如/media/tools/java/axis_1.4). 设置以下......

mj4738
2011/12/08
0
2
利用Apache AXIS 1 发布WebService

最近在论坛遇到很多朋友问AXIS发布webService的问题,这个问题已经回答了很多次了,现在特别发布一文章,说明AXIS 1的基本用法。 //很庆幸,CSDN的发文编辑器已经改版本,不那么难编辑了。 ...

张胜军
2013/03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
4
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
18
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部