从零开始学习WebService--2
发布时间:2020-12-16 23:42:15 所属栏目:安全 来源:网络整理
导读:webservice信息的传递基础就是SOAP协议,所以,本章我们主要了解SOAP传递机制 概念性东东 QName 具体请参考文章:http://blog.csdn.net/lulin27861/article/details/23342883 举例说明 比如你创建一个QName QName ename=new QName("http://service.soap.lul.
webservice信息的传递基础就是SOAP协议,所以,本章我们主要了解SOAP传递机制 概念性东东 QName 具体请参考文章:http://blog.csdn.net/lulin27861/article/details/23342883 举例说明 比如你创建一个QName QName ename=new QName("http://service.soap.lul.com/","add","ns"); 也就相当于创建了一个xml结点:<ns:add xmlns="http://service.soap.lul.com/"> SOAPMessage请求 - <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://service.soap.lul.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <soapenv:Body> - <q0:add> <a>11</a> <b>22</b> </q0:add> </soapenv:Body> </soapenv:Envelope> - <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> - <S:Body> + <ns2:addResponse xmlns:ns2="http://service.soap.lul.com/"> <addResult>33</addResult> </ns2:addResponse> </S:Body> </S:Envelope> 简单实例 功能:创建SOAPMessage,发送给服务器,服务器返回一个SOAPMessage 服务端代码还是上一节的服务端代码,启动以后,新建JUnit Test Case:test02,代码如下: private String wsdlUrl="http://localhost:8989/ms?wsdl"; private String ns="http://service.soap.lul.com/"; @Test public void test02(){ try { //1.Create Service URL url=new URL(wsdlUrl); QName sname=new QName(ns,"MyServiceImplService"); Service service=Service.create(url,sname); //2.Create Dispatch Dispatch<SOAPMessage> dispatch=service.createDispatch(new QName(ns,"MyServiceImplPort"),SOAPMessage.class,Service.Mode.MESSAGE); //3.Create SOAPMessage SOAPMessage message=MessageFactory.newInstance().createMessage(); SOAPEnvelope envelope=message.getSOAPPart().getEnvelope(); SOAPBody body=envelope.getBody(); //4.Create QName to pass data of message QName ename=new QName(ns,"ns");//<ns:add xmlns="http://service.soap.lul.com/"> SOAPBodyElement ele=body.addBodyElement(ename); ele.addChildElement("a").setValue("11"); ele.addChildElement("b").setValue("22"); message.writeTo(System.out); System.out.println("n invoking......"); //5.Pass message by dispatch.It will return response. SOAPMessage response=dispatch.invoke(message); response.writeTo(System.out); System.out.println(); //6.Convert response to dom object Document doc=response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument(); String str=doc.getElementsByTagName("addResult").item(0).getTextContent(); System.out.println(str); } catch (Exception e) { e.printStackTrace(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |