Java调用WebService方法总结(8)--soap.jar调用WebService
Apache的soap.jar是一种历史很久远的WebService技术,大概是2001年左右的技术,所需soap.jar可以在http://archive.apache.org/dist/ws/soap/version-2.3.1/下载;本文简单记录下其调用WebService的方法。文中所使用到的软件版本:Java 1.8.0_191、soap 2.3.1。
1、准备
参考Java调用WebService方法总结(1)--准备工作
2、调用
这种方式调用本地服务成功了,但调用在线的服务时返回值总是为空,参数没传过去,估计需要设置参数的命名空间,但又没找到相关方法。
package com.inspur.ws; import java.net.URL;
import java.util.Vector; import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.encoding.SOAPMappingRegistry;
import org.apache.soap.encoding.soapenc.StringDeserializer;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
import org.apache.soap.util.xml.QName; /**
* soap调用WebService
*
*/
public class Soap {
private static String url = "http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl";
private static String targetNamespace = "http://webxml.com.cn/"; /**
* 调用在线的服务,返回值为空,参数没传过去,估计需要设置参数的命名空间,但又没找到相关方法
* @param param
*/
public static void call(String param) {
try {
Call call = new Call();
SOAPMappingRegistry registry = new SOAPMappingRegistry();
registry.mapTypes(Constants.NS_URI_SOAP_ENC, new QName(targetNamespace, "toTraditionalChineseResult"), null, null, new StringDeserializer());
call.setSOAPMappingRegistry(registry); call.setTargetObjectURI(targetNamespace);
call.setMethodName("toTraditionalChinese");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); Vector<Parameter> params = new Vector<Parameter>();
//没找到参数设置命名空间的方法
params.addElement(new Parameter("sText", String.class, param, null));
call.setParams(params); Response response = call.invoke(new URL(url), "http://webxml.com.cn/toTraditionalChinese");
if (response.generatedFault()) {
Fault fault = response.getFault();
System.out.println(fault.getFaultCode() + "|" + fault.getFaultString());
} else {
System.out.println(response.getReturnValue() + "|" + response.getReturnValue().getValue());//第二个参数为SOAPAction
}
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 调用本地服务成功
* @param param
*/
public static void call2(String param) {
try {
Call call = new Call();
SOAPMappingRegistry registry = new SOAPMappingRegistry();
registry.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("", "return"), null, null, new StringDeserializer());
call.setSOAPMappingRegistry(registry); call.setTargetObjectURI("http://ws.zsyw.inspur.com/");
call.setMethodName("hello");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); Vector<Parameter> params = new Vector<Parameter>();
params.addElement(new Parameter("name", String.class, param, null));
call.setParams(params); Response response = call.invoke(new URL("http://10.40.103.48:9006/zsywservice/TestService?wsdl"), "");
if (response.generatedFault()) {
Fault fault = response.getFault();
System.out.println(fault.getFaultCode() + "|" + fault.getFaultString());
} else {
System.out.println(response.getReturnValue());
}
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
call("小学");//返回空
call2("大学");//hello,大学
}
}
Java调用WebService方法总结(8)--soap.jar调用WebService的更多相关文章
- JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz
iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...
- Java中一个方法只被一个线程调用一次
1.想在运行时抛出异常,终止方法的运行 private final Set<Long> THREADS = new HashSet<>(); public void someM ...
- Java发布webservice应用并发送SOAP请求调用
webservice框架有很多,比如axis.axis2.cxf.xFire等等,做服务端和做客户端都可行,个人感觉使用这些框架的好处是减少了对于接口信息的解析,最主要的是减少了对于传递于网络中XML ...
- Java调用WebService方法总结(1)--准备工作
WebService是一种跨编程语言.跨操作系统平台的远程调用技术,已存在很多年了,很多接口也都是通过WebService方式来发布的:本系列文章主要介绍Java调用WebService的各种方法,使 ...
- Java 调用对象方法的执行过程
弄清调用对象方法的执行过程十分重要.下面是调用过程的详细描述: 1) 编译器查看对象的声明类型和方法名.假设调用x.f(param),且隐式参数x声明为C类的对象.需要注意的是:有可能存在多个名为f, ...
- java nio使用方法(转)
最近由于工作关系要做一些Java方面的开发,其中最重要的一块就是Java NIO(New I/O),尽管很早以前了解过一些,但并没有认真去看过它的实现原理,也没有机会在工作中使用,这次也好重新研究一下 ...
- 【细说Java】揭开Java的main方法神秘的面纱
大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可 ...
- 【细说Java】揭开Java的main方法神秘的面纱(转)
大家都知道,main方法是Java应用程序的入口,其定义格式为: public static void main(String[] args) 可是为什么要这么定义呢?不这样定义可以么?main方法可 ...
- Java多线程-run方法与start方法的区别
package com.interview; /** * java多线程的两种实现方式以及run.start方法的区别 * @author MEI.LIU * */ public class Thre ...
随机推荐
- redis状态详解
redis查看状态信息 info all|default Info 指定项 server服务器信息 redis_version : Redis 服务器版本 redis_git_sha1 : Git S ...
- 大名鼎鼎的RPC和MQ到底有啥区别和联系
RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制. RPC框架 知名度较高的有Thrift(FB的).dubbo(阿里的). R ...
- 20189220 余超《Linux内核原理与分析》第四周作业
构造一个简单的Linux系统MenuOS 第三章基础知识 计算机的三大法宝:存储计算机,函数调用堆栈,中断. 操作系统的两把宝剑:中断上下文,进程上下文. Linux内核源码的目录结构: arch目录 ...
- MVC设计模式和三层架构
JavaEE设计模式 1.传统设计模式(现在几乎不再使用): Jsp + javaBean, JavaBean用来对应数据库中的表,jsp负责显示界面.接受请求.处理业务.访问数据库. 弊端: 业务多 ...
- Java封装jar包对外提供可执行文件
编写Main方法,封装jar包 1.编写Main方法 import java.util.Date; /** * 描述 : * * @Author : zhanghao * @Time : 2019/1 ...
- [源码分析]LinkedHashMap
一个键有序的 HashMap 可以将 LinkedHashMap 理解为 LinkList + HashMap,所以研究LinkedHashMap之前要先看HashMap代码.这里不再赘述.其实L ...
- Android ADB常用命令使用
Android SDK: adb shell 命令的使用(am.pm.wm.screencap.monkey等) https://blog.csdn.net/xietansheng/article/d ...
- Mac 上ssh远程连接Linux服务器提示Host key verification failed.
当我们对重装远程服务器的时候会出现Host key verification failed问题 解决办法: rm -rf ~/.ssh/known_hosts 重新ssh连接,OK!
- openresty开发系列31--openresty执行流程
openresty开发系列31--openresty执行流程 我们先看个例子 location /test { set $a 32; echo $a; set $a 56; e ...
- Linux下查找命令 —— find、grep、 which、 whereis、 locate
find命令 基本格式 find < path > < expression > < cmd > ''' path: 所要搜索的目录及其所有子目录.默认为当前目录. ...