Java调用外部WebService接口教程
本文档提供了一种调用外部Web服务(WebService)的方法,特别是通过Apache Axis库进行调用。在Java编程环境中,该示例代码展示了如何设置和执行请求,以便与远程Web服务接口进行通信。 在Java中,调用外部Web服务通常涉及以下步骤: 1. 导入必要的库:为了能够调用Web服务,首先需要引入Apache Axis的相关库,如`org.apache.axis.client.Call`和`org.apache.axis.client.Service`。这些库提供了与Web服务交互所需的功能。 2. 指定Web服务的地址(endpoint):在示例代码中,`endpoint`变量存储了Web服务的URL,这里是"http://10.128.33.12:50000/WTPIDEV~apps~webservice~wtpidev.com/testWS05Service?wsdl"。这个URL是Web服务的WSDL(Web Service Description Language)文档的地址,它定义了服务的操作、参数和返回类型。 3. 创建Service对象:使用`new Service()`创建一个`Service`对象,这是与Web服务交互的基础。 4. 创建Call对象:通过`Service`对象的`createCall()`方法,我们可以创建一个`Call`对象,它代表了一个即将发送的Web服务请求。 5. 配置Call对象:接下来,我们需要设置`Call`对象的属性,如目标端点地址(`setTargetEndpointAddress`)、操作名称(`setOperationName`)、输入参数(`addParameter`)、返回类型(`setReturnType`)、SOAP动作(`setSOAPAction`)以及编码风格(`setEncodingStyle`)等。 6. 参数设置:`addParameter`方法用于添加调用Web服务时需要传递的参数。在这个例子中,参数名为“NAME”,类型为`XMLType.XSD_STRING`,模式为`ParameterMode.IN`,表示这是一个输入参数。 7. 禁止多引用(DOMultiRefs):通过`call.setProperty(AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE)`,可以避免在处理响应时出现的多引用问题。 8. 设置SOAP版本:`call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS)`定义了使用的SOAP协议版本,这里是SOAP 1.1。 9. 执行调用:最后,通过`call.invoke`方法来执行Web服务调用,并获取返回的结果。在示例代码中,返回结果被赋值给了`Object result`。 10. 处理结果:调用完成后,`result`将包含Web服务返回的数据。根据返回数据的类型,可能需要进一步解析或转换。 调用外部Web服务涉及网络通信、HTTP请求和SOAP协议的使用。Apache Axis提供了一个方便的框架,简化了这个过程,使得开发者能够更容易地与Web服务进行交互。在实际开发中,确保正确配置所有参数,并妥善处理可能出现的异常,是非常重要的。
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class t_1 {
public static void main(String[] args) {
try {
String endpoint = "http://10.128.33.12:50000/WTPIDEV~apps~webservice~wtpidev.com/testWS05Service?wsdl";
// 直接引用远程的wsdl文件
// 以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("testWs");// WSDL里面描述的接口名称
call.addParameter("NAME",org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型
call.setUseSOAPAction(true);
call.setEncodingStyle(null);
call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
call.setOperationName(new javax.xml.namespace.QName("http://test.ws.itts.com/", "testWs"));
String testname= "测试姓名";
Object result = call.invoke(new Object[] { testname});
// 给方法传递参数,并且调用方法
System.out.println( result);
} catch (Exception e) {
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展