soap消息传递和处理(基于Message和Payload的方式)
2017-01-02 21:08
447 查看
一、webservice的定义
1. 接口定义:package com.npf.server; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import com.npf.model.User; @WebService public interface MyService { @WebResult(name="addReturnResult") public int add(@WebParam(name="a")int a, @WebParam(name="b")int b); @WebResult(name="loginReturnUser") public User login(@WebParam(name="username")String username,@WebParam(name="password")String password); }2. 接口实现:
package com.npf.server; import javax.jws.WebService; import com.npf.model.User; @WebService( endpointInterface="com.npf.server.MyService", targetNamespace="http://server.npf.com/", portName="MyServiceImplPort") public class MyServiceImpl implements MyService { @Override public int add(int a, int b) { System.out.println("a+b"+"="+(a+b)); return a+b; } @Override public User login(String username, String password) { User user = new User(); user.setId("1"); user.setUsername("Jack"); user.setPassword("npf123"); return user; } }3. 发布服务:
package com.npf.server; import javax.xml.ws.Endpoint; public class ServerStart { public static void main(String[] args) { MyService service = new MyServiceImpl(); Endpoint.publish("http://localhost:8888/ns", service); } }
二、soap消息传递和处理(基于Message的方式)
package com.npf.client; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPBodyElement; import javax.xml.soap.SOAPEnvelope; import javax.xml.soap.SOAPMessage; import javax.xml.soap.SOAPPart; import javax.xml.ws.Dispatch; import javax.xml.ws.Service; import org.w3c.dom.Document; public class Client2 { public static void main(String[] args) throws Exception { //1.创建消息工厂 MessageFactory messageFactory = MessageFactory.newInstance(); //2.创建soapMessage SOAPMessage soapMessage = messageFactory.createMessage(); //3.创建soapPart SOAPPart soapPart = soapMessage.getSOAPPart(); //4.获取soapEnvelope SOAPEnvelope envelope = soapPart.getEnvelope(); //5.可以通过soapEnvelope获取有效的header和body信息 SOAPBody body = envelope.getBody(); //6.创建一个Qname(Qname就是一个有效的节点) QName qname = new QName("http://server.npf.com/","add","tns"); //7.将节点插入body,作为一个空架的节点 SOAPBodyElement element = body.addBodyElement(qname); //8.在刚才的空架的节点中插入元素 element.addChildElement("a").setValue("22"); element.addChildElement("b").setValue("33"); //soapMessage.writeTo(System.out); //9.创建服务 URL uri = new URL("http://localhost:8888/ns?wsdl"); QName sname = new QName("http://server.npf.com/","MyServiceImplService"); Service service = Service.create(uri, sname); //10.创建Dispatch Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName( "http://server.npf.com/","MyServiceImplPort"), SOAPMessage.class, Service.Mode.MESSAGE); SOAPMessage responseSoapMessage = dispatch.invoke(soapMessage); responseSoapMessage.writeTo(System.out); System.out.println(""); //11.将响应的消息转换成dom对象 Document document = responseSoapMessage.getSOAPPart().getEnvelope().getBody().extractContentAsDocument(); String content = document.getElementsByTagName("addReturnResult").item(0).getTextContent(); System.out.println(content); } }
相关文章推荐
- Webservice06---SOAP消息的传递和处理(基于Message方式)
- soap消息的传递与处理(二)(基于payload的方式)
- Webservice_13_Payload的方式传递SOAP的消息和处理 和 用SOAPMessage传递SOAP的消息和处理(无参数)
- SOAP消息的创建、传递和处理(MESSAGE方式)
- SOAP消息的传递和处理(PAYLOAD方式)
- Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递
- Android基于Message进程间通信(一) 初级篇——消息处理
- Android 事件处理模型(三)消息传递机制: Handler Looper MessageQueue
- WebService学习笔记(四) - SOAP消息格式与处理方式
- Handler消息传递机制(三)Message消息的两种发送方式
- SOAP消息的创建,传递,处理的学习笔记
- Linux平台下基于BitTorrent应用层协议的下载软件开发--消息处理模块(message.h)
- Webservice_12_传递SOAP的消息和处理
- Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。
- RxBus进阶------基于RxJava2.x实现以注解的方式传递消息
- 事件处理方式 && 消息传递机制
- soap消息分析和soap消息的传递和处理(一)
- soap消息的传递和处理(三)——包含header和异常的处理
- 基于ExtJS的左右框架和消息传递处理
- Linux平台下基于BitTorrent应用层协议的下载软件开发--消息处理模块(message.c)