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 ...
随机推荐
- rsync实时同步
假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器 有目录 /opt/test/ 192.168.0.2 目标服务器 有目录 /opt/bak/test/ 实现的目的就是保持这两 ...
- 20189220 余超《Linux内核原理与分析》第三周作业
操作系统如何工作的 第二章的基础知识 计算机的三大法宝:存储程序计算机,函数调用堆栈机制,中断. 堆栈:堆栈是C语言程序运行时必须使用的几率函数条用路径和参数存储的空间,具体作用分为:记录函数条用的框 ...
- SpringMVC(下)
一.访问静态资源 在进行Spring MVC的配置时,通常我们会配置一个dispatcher servlet用于处理对应的URL 在设置url-pattern时可以设置三种形式 (1)/* :拦截所有 ...
- 详解python3如何调用c语言代码
本文链接:https://blog.csdn.net/u012247418/article/details/80170690开发环境linux: python3.5.2 + ubuntu-gnome- ...
- Android Studio打包没有Generate signed apk选项 解决方法
原文地址:https://www.jianshu.com/p/9e02e55f0ba8 1.点击build栏目-并没有Generate signed apk选项 2.点击file,选中如下图所示Syn ...
- Flutter Android 正式打包、以及升级应用 重新打包
Flutter Android 正式打包 打开androidStudio软件 1.修改版本号. android->app->src->main->AndroidManifest ...
- 【视频版】PDF合并器破解视频教程
无聊顺手录了一下,需要的拿去. 下载地址: 链接:https://pan.baidu.com/s/1TtK1JNzNw0BIl0eRPS_nlw 提取码复制可见:pqgi
- Django文档阅读之聚合
聚合 我们将引用以下模型.这些模型用来记录多个网上书店的库存. from django.db import models class Author(models.Model): name = mode ...
- LInux学习之路
linux 简单操作命令 cd 进入目录 ls 查看 ll详细查看 man ls -- help touch mkdir find 正则表达式 ? [] [a-z][0-9] {字符串,} {a..z ...
- Linux 反弹 Shell
攻击场景 Attacker:192.168.0.106 win10 Victim:192.168.2.140 kali NC 反弹 shell Netcat简介 俗称瑞士军刀或NC,小巧强悍,可以读写 ...