1、首先这个接口的WSDL如下:
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="http://短信服务器IP/qxt_jtd/service/SmsService" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://短信服务器IP/qxt_jtd/service/SmsService" xmlns:intf="http://短信服务器IP/qxt_jtd/service/SmsService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://io.java" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <!--
WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)
-->
- <wsdl:types>
- <schema targetNamespace="http://短信服务器IP/qxt_jtd/service/SmsService" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://io.java" />
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
- <complexType name="ArrayOf_xsd_string">
- <complexContent>
- <restriction base="soapenc:Array">
<attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]" />
</restriction>
</complexContent>
</complexType>
</schema>
</wsdl:types>
- <wsdl:message name="listSortedFilesResponse">
<wsdl:part name="listSortedFilesReturn" type="impl:ArrayOf_xsd_string" />
</wsdl:message>
- <wsdl:message name="getMoResponse">
<wsdl:part name="getMoReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="smsFileNameRequest">
<wsdl:part name="tag" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getReportResponse1">
<wsdl:part name="getReportReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getBalanceResponse1">
<wsdl:part name="getBalanceReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="sendSmsRequest">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
<wsdl:part name="phone" type="xsd:string" />
<wsdl:part name="content" type="xsd:string" />
<wsdl:part name="gwid" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="sendSmsResponse">
<wsdl:part name="sendSmsReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getBalanceRequest">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="sendSmsRequest1">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
<wsdl:part name="gwid" type="xsd:string" />
<wsdl:part name="phone" type="xsd:string" />
<wsdl:part name="content" type="xsd:string" />
<wsdl:part name="npwd" type="xsd:string" />
<wsdl:part name="page" type="xsd:string" />
<wsdl:part name="cid" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getReportRequest">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getMoRequest1">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
<wsdl:part name="version" type="xsd:string" />
<wsdl:part name="number" type="xsd:string" />
<wsdl:part name="content" type="xsd:string" />
<wsdl:part name="npwd" type="xsd:string" />
<wsdl:part name="page" type="xsd:string" />
<wsdl:part name="cid" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getReportRequest1">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
<wsdl:part name="version" type="xsd:string" />
<wsdl:part name="number" type="xsd:string" />
<wsdl:part name="content" type="xsd:string" />
<wsdl:part name="npwd" type="xsd:string" />
<wsdl:part name="page" type="xsd:string" />
<wsdl:part name="cid" type="xsd:string" />
</wsdl:message>
<wsdl:message name="mainResponse" />
- <wsdl:message name="mainRequest">
<wsdl:part name="s" type="impl:ArrayOf_xsd_string" />
</wsdl:message>
- <wsdl:message name="sendMmsResponse">
<wsdl:part name="sendMmsReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getMoRequest">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getBalanceResponse">
<wsdl:part name="getBalanceReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="listSortedFilesRequest">
<wsdl:part name="dirFile" type="xsd:anyType" />
</wsdl:message>
- <wsdl:message name="getReportResponse">
<wsdl:part name="getReportReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getMoResponse1">
<wsdl:part name="getMoReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="sendSmsResponse1">
<wsdl:part name="sendSmsReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="getBalanceRequest1">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
<wsdl:part name="version" type="xsd:string" />
<wsdl:part name="number" type="xsd:string" />
<wsdl:part name="content" type="xsd:string" />
<wsdl:part name="npwd" type="xsd:string" />
<wsdl:part name="page" type="xsd:string" />
<wsdl:part name="cid" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="sendMmsRequest">
<wsdl:part name="username" type="xsd:string" />
<wsdl:part name="pwd" type="xsd:string" />
<wsdl:part name="phone" type="xsd:string" />
<wsdl:part name="title" type="xsd:string" />
<wsdl:part name="content" type="xsd:string" />
<wsdl:part name="gwid" type="xsd:string" />
</wsdl:message>
- <wsdl:message name="smsFileNameResponse">
<wsdl:part name="smsFileNameReturn" type="xsd:string" />
</wsdl:message>
- <wsdl:portType name="SmsService">
- <wsdl:operation name="main" parameterOrder="s">
<wsdl:input message="impl:mainRequest" name="mainRequest" />
<wsdl:output message="impl:mainResponse" name="mainResponse" />
</wsdl:operation>
- <wsdl:operation name="getBalance" parameterOrder="username pwd">
<wsdl:input message="impl:getBalanceRequest" name="getBalanceRequest" />
<wsdl:output message="impl:getBalanceResponse" name="getBalanceResponse" />
</wsdl:operation>
- <wsdl:operation name="getBalance" parameterOrder="username pwd version number content npwd page cid">
<wsdl:input message="impl:getBalanceRequest1" name="getBalanceRequest1" />
<wsdl:output message="impl:getBalanceResponse1" name="getBalanceResponse1" />
</wsdl:operation>
- <wsdl:operation name="sendSms" parameterOrder="username pwd phone content gwid">
<wsdl:input message="impl:sendSmsRequest" name="sendSmsRequest" />
<wsdl:output message="impl:sendSmsResponse" name="sendSmsResponse" />
</wsdl:operation>
- <wsdl:operation name="sendSms" parameterOrder="username pwd gwid phone content npwd page cid">
<wsdl:input message="impl:sendSmsRequest1" name="sendSmsRequest1" />
<wsdl:output message="impl:sendSmsResponse1" name="sendSmsResponse1" />
</wsdl:operation>
- <wsdl:operation name="smsFileName" parameterOrder="tag">
<wsdl:input message="impl:smsFileNameRequest" name="smsFileNameRequest" />
<wsdl:output message="impl:smsFileNameResponse" name="smsFileNameResponse" />
</wsdl:operation>
- <wsdl:operation name="sendMms" parameterOrder="username pwd phone title content gwid">
<wsdl:input message="impl:sendMmsRequest" name="sendMmsRequest" />
<wsdl:output message="impl:sendMmsResponse" name="sendMmsResponse" />
</wsdl:operation>
- <wsdl:operation name="getReport" parameterOrder="username pwd">
<wsdl:input message="impl:getReportRequest" name="getReportRequest" />
<wsdl:output message="impl:getReportResponse" name="getReportResponse" />
</wsdl:operation>
- <wsdl:operation name="getReport" parameterOrder="username pwd version number content npwd page cid">
<wsdl:input message="impl:getReportRequest1" name="getReportRequest1" />
<wsdl:output message="impl:getReportResponse1" name="getReportResponse1" />
</wsdl:operation>
- <wsdl:operation name="listSortedFiles" parameterOrder="dirFile">
<wsdl:input message="impl:listSortedFilesRequest" name="listSortedFilesRequest" />
<wsdl:output message="impl:listSortedFilesResponse" name="listSortedFilesResponse" />
</wsdl:operation>
- <wsdl:operation name="getMo" parameterOrder="username pwd">
<wsdl:input message="impl:getMoRequest" name="getMoRequest" />
<wsdl:output message="impl:getMoResponse" name="getMoResponse" />
</wsdl:operation>
- <wsdl:operation name="getMo" parameterOrder="username pwd version number content npwd page cid">
<wsdl:input message="impl:getMoRequest1" name="getMoRequest1" />
<wsdl:output message="impl:getMoResponse1" name="getMoResponse1" />
</wsdl:operation>
</wsdl:portType>
- <wsdl:binding name="SmsServiceSoapBinding" type="impl:SmsService">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
- <wsdl:operation name="main">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="mainRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="mainResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getBalance">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="getBalanceRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="getBalanceResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getBalance">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="getBalanceRequest1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="getBalanceResponse1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="sendSms">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="sendSmsRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="sendSmsResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="sendSms">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="sendSmsRequest1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="sendSmsResponse1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="smsFileName">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="smsFileNameRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="smsFileNameResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="sendMms">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="sendMmsRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="sendMmsResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getReport">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="getReportRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="getReportResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getReport">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="getReportRequest1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="getReportResponse1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="listSortedFiles">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="listSortedFilesRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="listSortedFilesResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getMo">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="getMoRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="getMoResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
- <wsdl:operation name="getMo">
<wsdlsoap:operation soapAction="" />
- <wsdl:input name="getMoRequest1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://util.sms.jtd.com" use="encoded" />
</wsdl:input>
- <wsdl:output name="getMoResponse1">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://短信服务器IP/qxt_jtd/service/SmsService" use="encoded" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
- <wsdl:service name="SmsServiceService">
- <wsdl:port binding="impl:SmsServiceSoapBinding" name="SmsService">
<wsdlsoap:address location="http://短信服务器IP/qxt_jtd/service/SmsService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
2、其次我们来研究几个需要关注的信息:
目标命名空间[targetNamespace]:http://短信服务器IP/qxt_jtd/service/SmsService,你可以Ctrl+F在上面查找该属性的值
WebService服务的名字、端点名字、端点地址:让我们看下面这个节点:
- <wsdl:service name="SmsServiceService">
- <wsdl:port binding="impl:SmsServiceSoapBinding" name="SmsService">
<wsdlsoap:address location="http://短信服务器IP/qxt_jtd/service/SmsService" />
</wsdl:port>
</wsdl:service>
在上面的信息中:
name="SmsServiceService"----------------->表示服务的名字
name="SmsService"------------------------>表示端点的名字
location="http://短信服务器IP/qxt_jtd/service/SmsService"---->表示端点的地址
3、这个端点下有哪些方法可以调用,方法的参数和返回值分别是什么呢,参考下面的节点信息:
- <wsdl:portType name="SmsService">
- <wsdl:operation name="main" parameterOrder="s">
<wsdl:input message="impl:mainRequest" name="mainRequest" />
<wsdl:output message="impl:mainResponse" name="mainResponse" />
</wsdl:operation>
- <wsdl:operation name="getBalance" parameterOrder="username pwd">
<wsdl:input message="impl:getBalanceRequest" name="getBalanceRequest" />
<wsdl:output message="impl:getBalanceResponse" name="getBalanceResponse" />
</wsdl:operation>
- <wsdl:operation name="getBalance" parameterOrder="username pwd version number content npwd page cid">
<wsdl:input message="impl:getBalanceRequest1" name="getBalanceRequest1" />
<wsdl:output message="impl:getBalanceResponse1" name="getBalanceResponse1" />
</wsdl:operation>
- <wsdl:operation name="sendSms" parameterOrder="username pwd phone content gwid">
<wsdl:input message="impl:sendSmsRequest" name="sendSmsRequest" />
<wsdl:output message="impl:sendSmsResponse" name="sendSmsResponse" />
</wsdl:operation>
- <wsdl:operation name="sendSms" parameterOrder="username pwd gwid phone content npwd page cid">
<wsdl:input message="impl:sendSmsRequest1" name="sendSmsRequest1" />
<wsdl:output message="impl:sendSmsResponse1" name="sendSmsResponse1" />
</wsdl:operation>
- <wsdl:operation name="smsFileName" parameterOrder="tag">
<wsdl:input message="impl:smsFileNameRequest" name="smsFileNameRequest" />
<wsdl:output message="impl:smsFileNameResponse" name="smsFileNameResponse" />
</wsdl:operation>
- <wsdl:operation name="sendMms" parameterOrder="username pwd phone title content gwid">
<wsdl:input message="impl:sendMmsRequest" name="sendMmsRequest" />
<wsdl:output message="impl:sendMmsResponse" name="sendMmsResponse" />
</wsdl:operation>
- <wsdl:operation name="getReport" parameterOrder="username pwd">
<wsdl:input message="impl:getReportRequest" name="getReportRequest" />
<wsdl:output message="impl:getReportResponse" name="getReportResponse" />
</wsdl:operation>
- <wsdl:operation name="getReport" parameterOrder="username pwd version number content npwd page cid">
<wsdl:input message="impl:getReportRequest1" name="getReportRequest1" />
<wsdl:output message="impl:getReportResponse1" name="getReportResponse1" />
</wsdl:operation>
- <wsdl:operation name="listSortedFiles" parameterOrder="dirFile">
<wsdl:input message="impl:listSortedFilesRequest" name="listSortedFilesRequest" />
<wsdl:output message="impl:listSortedFilesResponse" name="listSortedFilesResponse" />
</wsdl:operation>
- <wsdl:operation name="getMo" parameterOrder="username pwd">
<wsdl:input message="impl:getMoRequest" name="getMoRequest" />
<wsdl:output message="impl:getMoResponse" name="getMoResponse" />
</wsdl:operation>
- <wsdl:operation name="getMo" parameterOrder="username pwd version number content npwd page cid">
<wsdl:input message="impl:getMoRequest1" name="getMoRequest1" />
<wsdl:output message="impl:getMoResponse1" name="getMoResponse1" />
</wsdl:operation>
</wsdl:portType>
以发送短消息为例:
<wsdl:operation name="sendSms" parameterOrder="username pwd phone content gwid">
<wsdl:input message="impl:sendSmsRequest" name="sendSmsRequest" />
<wsdl:output message="impl:sendSmsResponse" name="sendSmsResponse" />
</wsdl:operation>
方法名称:sendSms;
方法参数:username pwd phone content gwid;
方法返回值类型参见WSDL关于消息“sendSmsResponse”的描述:
4、使用JAX-WS调用这个WebService中的方法:
发送消息示范:
package sms;
import java.net.*;
import java.util.*;
import javax.xml.*;
import javax.xml.soap.*;
import javax.xml.ws.*;
import javax.xml.ws.soap.*;
import javax.xml.namespace.*;
public class SendClient {
// 名字空间
public static final String targetNamespace = "http://短信服务器IP/qxt_jtd/service/SmsService";
// 服务名
public static final String serName = "SmsServiceService";
// 端口名
public static final String pName = "SmsService";
// 服务地址
public static final String endpointAddress = "http://短信服务器IP/qxt_jtd/service/SmsService";
// 方法名
public static final String OPER_NAME = "sendSms";
static Object[] myargs = new Object[5];
public static void main(String[] args) throws MalformedURLException,
Exception {
myargs[0] = "签约企业短信账号";
myargs[1] = "签约企业短信密码";
myargs[2] = "发送的目标手机号码1,目标手机号2,目标手机号码3";
myargs[3] = "短信内容";
myargs[4] = "短信通道类型";
//构造服务名对象
QName serviceName = new QName(targetNamespace, serName);
//构造端口名对象
QName portName = new QName(targetNamespace, pName);
//通过服务名对象创建服务对象
javax.xml.ws.Service service = Service.create(serviceName);
//向服务上添加一个新的端口
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,
endpointAddress);
//创建一个分发实例
Dispatch<SOAPMessage> dispatch = service.createDispatch(portName,
SOAPMessage.class, Service.Mode.MESSAGE);
BindingProvider bp = (BindingProvider)dispatch;
//获得请求上下文用于初始化请求信息
Map<String, Object> rc = bp.getRequestContext();
rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
rc.put(BindingProvider.SOAPACTION_URI_PROPERTY, OPER_NAME);
MessageFactory factory = ((SOAPBinding) bp.getBinding())
.getMessageFactory();
SOAPMessage request = factory.createMessage();
SOAPBody body = request.getSOAPBody();
QName payloadName = new QName(targetNamespace, OPER_NAME, "ns1");
SOAPBodyElement payload = body.addBodyElement(payloadName);
SOAPElement msg1 = payload.addChildElement("username");
msg1.addTextNode(myargs[0].toString());
SOAPElement msg2 = payload.addChildElement("pwd");
msg2.addTextNode(myargs[1].toString());
SOAPElement msg3 = payload.addChildElement("phone");
msg3.addTextNode(myargs[2].toString());
SOAPElement msg4 = payload.addChildElement("content");
msg4.addTextNode(myargs[3].toString());
SOAPElement msg5 = payload.addChildElement("gwid");
msg5.addTextNode(myargs[4].toString());
SOAPMessage reply = null;
try {
reply = dispatch.invoke(request);
} catch (WebServiceException wse) {
wse.printStackTrace();
}
SOAPBody soapBody = reply.getSOAPBody();
SOAPBodyElement nextSoapBodyElement = (SOAPBodyElement) soapBody
.getChildElements().next();
SOAPElement soapElement = (SOAPElement) nextSoapBodyElement
.getChildElements().next();
System.out.println("获取回应信息为:" + soapElement.getValue());
}
}
接收消息示范:[获得手机回复的短信]
package sms;
import java.net.*;
import java.util.*;
import javax.xml.*;
import javax.xml.soap.*;
import javax.xml.ws.*;
import javax.xml.ws.soap.*;
import javax.xml.namespace.*;
public class ReceiveClient {
// 名字空间
public static final String targetNamespace = "http://短信服务器IP/qxt_jtd/service/SmsService";
// 服务名
public static final String serName = "SmsServiceService";
// 端口名
public static final String pName = "SmsService";
// 服务地址
public static final String endpointAddress = "http://短信服务器IP/qxt_jtd/service/SmsService";
// 方法名
public static final String OPER_NAME = "getMo";
static Object[] myargs = new Object[2];
public static void main(String[] args) throws MalformedURLException,
Exception {
myargs[0] = "签约企业短信账号";
myargs[1] = "签约企业短信密码";
QName serviceName = new QName(targetNamespace, serName);QName portName = new QName(targetNamespace, pName);javax.xml.ws.Service service = Service.create(serviceName);service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,endpointAddress);Dispatch<SOAPMessage>
dispatch = service.createDispatch(portName,SOAPMessage.class, Service.Mode.MESSAGE);BindingProvider bp = (BindingProvider) dispatch;Map<String, Object> rc = bp.getRequestContext();rc.put(BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);rc.put(BindingProvider.SOAPACTION_URI_PROPERTY,
OPER_NAME);MessageFactory factory = ((SOAPBinding) bp.getBinding()).getMessageFactory();SOAPMessage request = factory.createMessage();SOAPBody body = request.getSOAPBody();QName payloadName = new QName(targetNamespace, OPER_NAME,XMLConstants.DEFAULT_NS_PREFIX);SOAPBodyElement
payload = body.addBodyElement(payloadName);SOAPElement msg1 = payload.addChildElement("username");msg1.addTextNode(myargs[0].toString());SOAPElement msg2 = payload.addChildElement("pwd");msg2.addTextNode(myargs[1].toString());SOAPMessage reply = null;try {reply
= dispatch.invoke(request);} catch (WebServiceException wse) {wse.printStackTrace();}SOAPBody soapBody = reply.getSOAPBody();SOAPBodyElement nextSoapBodyElement = (SOAPBodyElement) soapBody.getChildElements().next();SOAPElement soapElement = (SOAPElement)
nextSoapBodyElement.getChildElements().next();String v = soapElement.getValue();v = java.net.URLDecoder.decode(v, "UTF-8");System.out.println("获取回应信息为:" + v);}}
关于如下使用JAX-WS创建发布和调用WebService请参考:http://fusesource.com/docs/framework/2.2/jaxws/index.html