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 ...
随机推荐
- inotify 监控文件系统操作
path0=path1=########################################################dir2watch1=/home/nanjing2/GridON ...
- 服务器收不到支付宝notify_url异步回调请求的问题排查
小背景 最近在调整支付宝支付的功能时发现,不能够正常接收支付宝付款成功之后的回调通知了,从代码到配置最后到服务器配置都排查了一遍,最终发现问题原因竟然是因为我们的回调地址notify_url是http ...
- c# 通过json.net中的JsonConverter进行自定义序列化与反序列化
https://www.cnblogs.com/yijiayi/p/10051284.html 相信大家在工作中会经常遇见对json进行序列化与反序列化吧,但通常的序列化与反序列化中的json结构与c ...
- 【maven】插件和依赖管理
1.插件管理 定义 pluginManagement 用来做插件管理的.它是表示插件声明,即你在项目中的pluginManagement下声明了插件,Maven不会加载该插件,pluginManage ...
- AudioManager: android插上耳机仍然使用扬声器播放音频
手机音频的输出有外放(Speaker).听筒(Telephone Receiver).有线耳机(WiredHeadset).蓝牙音箱(Bluetooth A2DP)等输出设备.在平时,电话免提.插拔耳 ...
- Java12新特性 -- 微基准测试套件
JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件.何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级.当 ...
- Nginx 配置 HTTP 代理
配置如下 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; ...
- python 中requests的返回数可直接使用json
对Python的request不是很了解,在使用时才发现,可以把request的请求结果,直接使用.json()['字段名']方法进行一个取值,案例如下 def test_tiantian(self) ...
- unittest中的TestLoader使用
一:unittest中的TestLoader使用说明 第一步:unittest增加TestSuit() suite=unittest.TestSuite() 第二步:unittest增加Testloa ...
- [LeetCode] 163. Missing Ranges 缺失区间
Given a sorted integer array nums, where the range of elements are in the inclusive range [lower, up ...