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”的描述:
<wsdl:message name="smsFileNameResponse">说明是返回值是字串类型。<wsdl:part name="smsFileNameReturn" type="xsd:string" /></wsdl:message>
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