Java调用WebService方法总结(4)--Axis调用WebService
Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了。文中demo所使用到的软件版本:Java 1.8.0_191、Axis 1.4。
1、准备
参考Java调用WebService方法总结(1)--准备工作
2、调用
2.1、call方式
/**
* call直接调用
* @param param
*/
public static void call(String param) {
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(url));
call.setEncodingStyle("utf-8");
//设置SOAPAction
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://webxml.com.cn/toTraditionalChinese");
//设置Soap协议版本
call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS);
//call.setSOAPVersion(SOAPConstants.SOAP12_CONSTANTS); call.addParameter(new QName(targetNamespace, "sText"), XMLType.XSD_STRING, ParameterMode.IN);
call.setOperationName(new QName(targetNamespace, "toTraditionalChinese"));
String result = (String) call.invoke(new Object[]{param});
System.out.println("call结果:" + result);
} catch (Exception e) {
e.printStackTrace();
}
}
2.2、WSDL2Java方式
2.2.1、org.apache.axis.wsdl.WSDL2Java生成代码
cmd中执行命令:
cd %AXIS_HOME%/lib
java -cp axis.jar;commons-logging-1.0.4.jar;commons-discovery-0.2.jar;jaxrpc.jar;wsdl4j-1.5.1.jar;saaj.jar org.apache.axis.wsdl.WSDL2Java http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl
生成的代码就在当前目录,包名为cn.com.webxml,文件如下:

2.2.2、用生成的代码调用WebService
/**
* 利用wsdl2java生成代码调用WebService
* @param param
*/
public static void wsdl2java(String param) {
try {
TraditionalSimplifiedWebService service = new TraditionalSimplifiedWebServiceLocator();
String result = service.getTraditionalSimplifiedWebServiceSoap().toTraditionalChinese(param);
System.out.println("wsdl2java soap1.1结果:" + result);
result = service.getTraditionalSimplifiedWebServiceSoap12().toTraditionalChinese(param);
System.out.println("wsdl2java soap1.2结果:" + result);
} catch (Exception e) {
e.printStackTrace();
}
}
2.2.3、完整代码
package com.inspur.ws; import java.net.URL; import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.soap.SOAPConstants; import cn.com.webxml.TraditionalSimplifiedWebService;
import cn.com.webxml.TraditionalSimplifiedWebServiceLocator; /**
*
* Axis调用WebService
*
*/
public class Axis {
private static String url = "http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl";
private static String targetNamespace = "http://webxml.com.cn/"; /**
* call直接调用
* @param param
*/
public static void call(String param) {
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(url));
call.setEncodingStyle("utf-8");
//设置SOAPAction
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://webxml.com.cn/toTraditionalChinese");
//设置Soap协议版本
call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS);
//call.setSOAPVersion(SOAPConstants.SOAP12_CONSTANTS); call.addParameter(new QName(targetNamespace, "sText"), XMLType.XSD_STRING, ParameterMode.IN);
call.setOperationName(new QName(targetNamespace, "toTraditionalChinese"));
String result = (String) call.invoke(new Object[]{param});
System.out.println("call结果:" + result);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 利用wsdl2java生成代码调用WebService
* @param param
*/
public static void wsdl2java(String param) {
try {
TraditionalSimplifiedWebService service = new TraditionalSimplifiedWebServiceLocator();
String result = service.getTraditionalSimplifiedWebServiceSoap().toTraditionalChinese(param);
System.out.println("wsdl2java soap1.1结果:" + result);
result = service.getTraditionalSimplifiedWebServiceSoap12().toTraditionalChinese(param);
System.out.println("wsdl2java soap1.2结果:" + result);
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
call("小学");
wsdl2java("大学");
}
}
Java调用WebService方法总结(4)--Axis调用WebService的更多相关文章
- Java调用WebService方法总结(5)--Axis2调用WebService
Axis2是新一点Axis,基于新的体系结构进行了全新编写,有更强的灵活性并可扩展到新的体系结构.文中demo所使用到的软件版本:Java 1.8.0_191.Axis2 1.7.9. 1.准备 参考 ...
- Java调用WebService方法总结(7)--CXF调用WebService
CXF = Celtix + XFire,继承了Celtix和XFire两大开源项目的精华,是一个开源的,全功能的,容易使用的WebService框架.文中所使用到的软件版本:Java 1.8.0_1 ...
- Java调用WebService方法总结(6)--XFire调用WebService
XFire是codeHaus组织提供的一个WebService开源框架,目前已被Apache的CXF所取代,已很少有人用了,这里简单记录下其调用WebService使用方法.官网现已不提供下载,可以到 ...
- Java调用WebService方法总结(3)--wsimport调用WebService
wsimport是JDK自带的把WSDL转成Java的工具,可以很方便的生成调用WebService的代码.文中所使用到的软件版本:Java 1.8.0_191. 1.准备 参考Java调用WebSe ...
- Java调用WebService方法总结(2)--JAX-WS调用WebService
用JAX-WS(Java API for XML Web Services)调用WebService不需要引入其他框架,都是JDK自带的:文中所使用到的软件版本:Java 1.8.0_191.Dom4 ...
- Webservice初体验:axis调用wsdl和document解析
Neo君遇到了需要调用webservice接口的情况,然而作为一只小白对这方面了解困乏,经过摸索,完成了一个小的Demo,记录下. 一:背景 同事给了我一个webservice地址,打开后后缀是&qu ...
- 既然 start() 方法会调用 run() 方法,为什么我们调用 start() 方法,而不直接调用 run() 方法?
当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码.如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行
- JAVA学习笔记--方法中的参数调用是引用调用or值调用
文献来源:<JAVA核心技术卷Ⅰ>,第4章第5节 (没有相关书籍的可看传送门) ps:测试demo因为偷懒,用的是String对象 结论:Java使用的是对象的值引用.即将任何对象所在内存 ...
- Java调用WebService方法总结(1)--准备工作
WebService是一种跨编程语言.跨操作系统平台的远程调用技术,已存在很多年了,很多接口也都是通过WebService方式来发布的:本系列文章主要介绍Java调用WebService的各种方法,使 ...
随机推荐
- Codeforces 839D Winter is here - 暴力 - 容斥原理
Winter is here at the North and the White Walkers are close. John Snow has an army consisting of n s ...
- SQLSERVER根据提成比率区间计算业绩提成
USE [Employee] GO /****** Object: Table [dbo].[Commission] Script Date: 2019/11/17 14:10:21 ******/ ...
- 【转】Android ROM分析(1):刷机原理及方法
一.刷机原理 android系统启动的时候,首先会进行一些诸如硬件自检之类的操作,这些操作完成以后(至少它应该知道当前的机器有没有电),会检查一下当前手机按键的状态(接下来就是所谓刷机模式切换了,不同 ...
- c 越界
int main(int argc, char* argv[]){ int i = 0; int arr[3] = {0}; for(; i<=3; i++){ arr[i] = 0; prin ...
- Python推荐一整套开发工具
原文:https://sourcery.ai/blog/python-best-practices/ 在开始一个新的Python项目时,很容易不做规划直接进入编码环节.花费少量时间,用最好的工具设置项 ...
- C# default(T)关键字
C#关键词default函数,default(T)可以得到该类型的默认值. C#在类初始化时,会给未显示赋值的字段.属性赋上默认值,但是值变量却不会. 值变量可以使用默认构造函数赋值,或者使用defa ...
- Oracle系列十二 约束
约束是表级的强制规定有以下五种约束: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 注意事项 如果不指定约束名 ,Oracle server 自动按照 S ...
- C++11:基于std::queue和std::mutex构建一个线程安全的队列
C++11:基于std::queue和std::mutex构建一个线程安全的队列 C++中的模板std::queue提供了一个队列容器,但这个容器并不是线程安全的,如果在多线程环境下使用队列,它是不能 ...
- jdbc如何处理事务
Connection提供了事务处理的方法,通过调用setAutoCommit(false)可以设置手动提交事务:当事务完成后用commit()显式提交事务:如果在事务处理过程中发生异常则通过rollb ...
- [图片问答]LODOP打印的行间距字间距
LODOP可以打印纯文本,也可以是超文本,关于哪些打印项是纯文本,哪些打印项是超文本,之前有博文相关介绍:LODOP中的纯文本和超文本打印项. 之前的关于纯文本的行间距字间距介绍:Lodop设置文本项 ...