`

使用axis调用WebService

    博客分类:
  • axis
阅读更多

公司项目有一个给用户发送短信的需求,需要调用一个.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)中有错误。 ---> 输入字符串的格式不正确

 

    参考:http://gaozi131.iteye.com/blog/516309

分享到:
评论

相关推荐

    使用axis调用WebService服务端

    压缩包中包含详细代码以及所用到的jar,是完整可运行的project。当然,需要正确的路径支持才可以运行,本人没有把我所用到的路径贴出,改为本机地址。

    java axis 调用webservice服务端

    在Java中,使用Axis调用WebService服务端主要涉及以下几个步骤: 1. **创建WebService客户端 stub**:首先,我们需要从服务端提供的WSDL文件生成客户端stub代码。这可以通过Axis的wsdl2java工具完成。运行该工具并...

    axis调用webservice接口所需jar包.rar

    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 axis调用Webservice

    本文将详细介绍如何在Android应用中利用Axis2来调用Web Service。 **一、Android与Web Service交互基础** 1. **SOAP(Simple Object Access Protocol)**: 是一种轻量级的协议,用于交换结构化的和类型化的信息。...

    java axis 调用C# webService所需的jar包

    要成功地使用Java Axis调用C# WebService,你需要以下关键的jar包: 1. axis.jar:这是Axis的核心库,包含了处理SOAP消息和生成Web服务客户端代码的基础类。 2. axis-wsdl4j.jar:这个库用于从WSDL(Web服务描述...

    详解axis调用webservice实例

    标题中的“详解axis调用webservice实例”表明我们将探讨如何使用Apache Axis库来调用Web服务。Apache Axis是一个开源工具,它允许Java开发者创建、部署和使用Web服务。在这个实例中,我们会有机会看到实际的Java代码...

    利用AXIS调用webservice所需JAR包

    本篇文章将深入探讨如何利用AXIS调用WebService,以及所需的JAR包及其作用。 首先,理解AXIS的基本概念至关重要。Apache Axis是Apache软件基金会开发的一个开源项目,它是一个用于构建Web服务和客户端的工具集。...

    axis调用webservice实例,包含jar包

    标题中的“axis调用webservice实例”涉及到的是在Java开发中使用Apache Axis库来调用Web服务的过程。Apache Axis是一个开放源代码的SOAP栈,它允许开发者创建和部署Web服务,同时也提供了客户端工具来调用这些服务。...

    最实用的axis调用webService接口所需的jar包和案例

    确保这些jar包在项目的类路径中,才能正确地使用Axis调用WebService接口。 三、调用流程 1. 创建代理对象:首先,根据WSDL文件生成Java服务代理类。可以使用Axis的wsdl2java工具,或者直接在Eclipse等IDE中导入WSDL...

    使用axis轻松调用Webservice

    标题“使用axis轻松调用Webservice”涉及到的是在IT领域中如何通过Apache Axis工具来便捷地与Web服务进行交互。Apache Axis是一个开放源代码的Java框架,它允许开发者创建、部署和使用Web服务。这个标题暗示了我们将...

    axis2发布webservice和调用axis2服务接口

    本文将详细讲解如何使用Axis2来发布Web服务以及如何生成客户端代码来调用这些服务。 首先,让我们了解发布Web服务的过程: 1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web...

    AXIS2作为客户端调用webService的demo

    用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    axis2客户端调用webService接口,精简jar包

    本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...

    java axis调用第三方webservice程序demo

    在Java中使用Axis调用Webservice,首先需要引入必要的库文件。这些库通常包括axis.jar、axis-wsdl4j.jar、commons-discovery.jar、commons-logging.jar、jaxrpc.jar和wsdl4j.jar等。这些库包含了处理SOAP消息、解析...

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这是一个强大的Java开发平台,支持多种开发任务,包括Web服务的开发和调试。 2. ...

    java 通过axis调用天气预报的webservice

    标题中的“Java通过Axis调用天气预报的WebService”是指使用Java编程语言,通过Apache Axis库来访问和使用公开的天气预报Web服务。Apache Axis是一个开放源码的SOAP(简单对象访问协议)工具包,它允许开发者创建和...

    Java Axis 直接调用webservice 接口工具类

    Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;

    axis客户端调用webservice

    java axis客户端调用webservice,可应用于ofbiz框架。 解决网络上共享代码两次调用后会出现timeout的BUG

    JAVA调用WebService(Axis)

    在本示例中,提供的"使用说明.txt"可能包含了关于如何使用Axis调用WebService的详细步骤和注意事项,而"axis"目录则可能包含Axis库的相关文件或示例代码。 总的来说,通过Apache Axis,Java开发者可以便捷地实现对...

Global site tag (gtag.js) - Google Analytics