公司项目有一个给用户发送短信的需求,需要调用一个.NET写的WebService。在写客户端过程中,遇到了不少的问题,在这里整理下,也希望和我遇到同样问题的小伙伴些少走点弯路。
直接上代码:
public static boolean send(String MsgContent, String DestNumber){ boolean res = false; try { // webservice路径 // 这里后面加不加 "?wsdl" 效果都一样的 String endpoint = "http://sms.28inter.com:8080/SmsService/SmsService.asmx"; // 发送短信接口方法名 String operationName = "SendEx"; String targetNamespace = "http://tempuri.org/"; // 定义service对象 Service service = new Service(); // 创建一个call对象 Call call = (Call) service.createCall(); // 设置目标地址,即webservice路径 call.setTargetEndpointAddress(endpoint); // 设置操作名称,即方法名称 call.setOperationName(new QName(targetNamespace, operationName)); // 设置方法参数 call.addParameter(new QName(targetNamespace, "UserId"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(targetNamespace, "Password"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(targetNamespace, "MsgContent"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(targetNamespace, "DestNumber"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(targetNamespace, "SendTime"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(targetNamespace, "SubNumber"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(targetNamespace, "BatchSendID"), XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName(targetNamespace, "BizType"), XMLType.XSD_STRING, ParameterMode.IN); // XMLType.XSD_INT call.addParameter(new QName(targetNamespace, "WapURL"), XMLType.XSD_STRING, ParameterMode.IN); /** * 设置返回值类型-由于文档给的是返回一个代理类SendExResp-这个需要用ws工具生成,不然就要手动写, * 故这里设置成org.w3c.dom.Element.class,不然会报org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected错误。 * 注:具体的返回类型,根据对方提供的ws进行设置即可,如:call.setReturnClass(String[].class); */ call.setReturnClass(org.w3c.dom.Element.class); // 解决错误:服务器未能识别 HTTP 头 SOAPAction 的值 call.setUseSOAPAction(true); call.setSOAPActionURI(targetNamespace + operationName); // 调用ws方法 call.invoke(new Object[]{SMS.USERID, SMS.PASSWORD, MsgContent, DestNumber, SMS.SENDTIME, SMS.SUBNUMBER, SMS.BATCHSENDID, SMS.BIZTYPE, SMS.WAPURL}); res = true; } catch (ServiceException e) { res = false; e.printStackTrace(); } catch (RemoteException e) { res = false; e.printStackTrace(); } return res; } 注:上述WSDL里面描述的参数BIZTYPE是int类型的,但传递参数时要传递字符串类型,否则报如下错误: 服务器无法读取请求。 ---> XML 文档(1, 841)中有错误。 ---> 输入字符串的格式不正确
相关推荐
压缩包中包含详细代码以及所用到的jar,是完整可运行的project。当然,需要正确的路径支持才可以运行,本人没有把我所用到的路径贴出,改为本机地址。
在Java中,使用Axis调用WebService服务端主要涉及以下几个步骤: 1. **创建WebService客户端 stub**:首先,我们需要从服务端提供的WSDL文件生成客户端stub代码。这可以通过Axis的wsdl2java工具完成。运行该工具并...
axis调用第三方webservice接口所需的jar包,包括axis-1.4.jar,axis-jaxrpc-1.3.jar,axis-jaxrpc-1.4.jar,commons-discovery-0.5.jar,commons-logging-1.2.jar,cxf-rt-databinding-jaxb-3.3.1.jar,javax.mail-...
本文将详细介绍如何在Android应用中利用Axis2来调用Web Service。 **一、Android与Web Service交互基础** 1. **SOAP(Simple Object Access Protocol)**: 是一种轻量级的协议,用于交换结构化的和类型化的信息。...
标题中的“详解axis调用webservice实例”表明我们将探讨如何使用Apache Axis库来调用Web服务。Apache Axis是一个开源工具,它允许Java开发者创建、部署和使用Web服务。在这个实例中,我们会有机会看到实际的Java代码...
本篇文章将深入探讨如何利用AXIS调用WebService,以及所需的JAR包及其作用。 首先,理解AXIS的基本概念至关重要。Apache Axis是Apache软件基金会开发的一个开源项目,它是一个用于构建Web服务和客户端的工具集。...
标题中的“axis调用webservice实例”涉及到的是在Java开发中使用Apache Axis库来调用Web服务的过程。Apache Axis是一个开放源代码的SOAP栈,它允许开发者创建和部署Web服务,同时也提供了客户端工具来调用这些服务。...
确保这些jar包在项目的类路径中,才能正确地使用Axis调用WebService接口。 三、调用流程 1. 创建代理对象:首先,根据WSDL文件生成Java服务代理类。可以使用Axis的wsdl2java工具,或者直接在Eclipse等IDE中导入WSDL...
标题“使用axis轻松调用Webservice”涉及到的是在IT领域中如何通过Apache Axis工具来便捷地与Web服务进行交互。Apache Axis是一个开放源代码的Java框架,它允许开发者创建、部署和使用Web服务。这个标题暗示了我们将...
本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解发布Web服务的过程: 1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web...
用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。
本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...
在Java中使用Axis调用Webservice,首先需要引入必要的库文件。这些库通常包括axis.jar、axis-wsdl4j.jar、commons-discovery.jar、commons-logging.jar、jaxrpc.jar和wsdl4j.jar等。这些库包含了处理SOAP消息、解析...
本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这是一个强大的Java开发平台,支持多种开发任务,包括Web服务的开发和调试。 2. ...
标题中的“Java通过Axis调用天气预报的WebService”是指使用Java编程语言,通过Apache Axis库来访问和使用公开的天气预报Web服务。Apache Axis是一个开放源码的SOAP(简单对象访问协议)工具包,它允许开发者创建和...
Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;
java axis客户端调用webservice,可应用于ofbiz框架。 解决网络上共享代码两次调用后会出现timeout的BUG
在本示例中,提供的"使用说明.txt"可能包含了关于如何使用Axis调用WebService的详细步骤和注意事项,而"axis"目录则可能包含Axis库的相关文件或示例代码。 总的来说,通过Apache Axis,Java开发者可以便捷地实现对...
使用Axis调用WebService时,你需要先下载Axis的二进制包,然后通过WSDL(Web服务描述语言)文件生成客户端存根类。这些存根类提供了与服务交互的方法,使得开发者可以像调用本地方法一样调用远程服务。 2. CXF:...