加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从零开始学习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>


SOAPMessage响应

- <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();
		}
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读