使用axis调用webservice

<span style="font-size:14px;">    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)中有错误。 ---> 输入字符串的格式不正确  </span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值