首页 > WebService客户端添加SOAPHeader信息

WebService客户端添加SOAPHeader信息

WebService客户端添加SOAPHeader信息

通过JAXBContext创建Marshaller对头信息进行解析为dom,获取WSBindingProvider,使用Headers.creat()创建soap的Header元素;

另外就是:将user转换为dom是为了不在有wsdl生成的LicenceInfo类中增加@WebRootElement

 1 public void testAdd_1(){
 2         try {
 3             JAXBContext jaxbc = JAXBContext.newInstance(LicenceInfo.class);
 4             User u = new User();
 5             u.setId(111);
 6             u.setUsername("yyyy");
 7             u.setPassword("oooooo");
 8             LicenceInfo info = new LicenceInfo();
 9             info.setRegisterUser(u);
10             //转化为element进行解析
11             QName qname = new QName("http://www.xiaoqiaolv/ws","licenceInfo");
12             JAXBElement ele = new JAXBElement(qname, LicenceInfo.class, info);
13                         
14             Marshaller marsh = jaxbc.createMarshaller();
15             marsh.setProperty(Marshaller.JAXB_FRAGMENT, true);
16             marsh.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
17 //            marsh.marshal(ele, System.out);
18             //转化为dom
19             Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
20             marsh.marshal(ele, doc);
21 //            userServiceImpl = new UserServiceImpl();
22 //            userService = userServiceImpl.getUserServiceImplPort();
23             //用下面的四行代替上面的两行内容是为了用tcpmon来监听两个接口之间的通信
24             URL url = new URL("http://localhost:8888/WebService_Server/ws?wsdl");
25             QName  qname1 = new QName("http://www.xiaoqiaolv/ws","UserServiceImpl");
26             userServiceImpl = new UserServiceImpl(url,qname1);
27             userService = userServiceImpl.getUserServiceImplPort();
28             //通过Headers.creat();完成header的添加
29             //获取WSBindingProvider
30             WSBindingProvider wsb = (WSBindingProvider)userService;
31             wsb.setOutboundHeaders(Headers.create(doc.getDocumentElement()));
32             
33             User user = new User();
34             user.setUsername("aaa");
35             user.setPassword("1111");
36             user.setId(21212);
37             userService.add(user);
38         } catch (Exception e) {
39             e.printStackTrace();
40         }
41     }

 

posted on 2014-02-25 20:03 吕展辉 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lvzhanhui/p/xiaoqiaolv_webService_header.html

更多相关:

  • 菜鸟一枚,正在学习C++ Gui Qt4,整理很零碎,欢迎批评指正   1.窗口标题: QWidget *window = new QWidget; window->setWindowTitle("Enter Your Age"); **************************************** 关于标题...

  • 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 总体思路是: 比较两个链表头节点,较小的插入新链表指针之后,同时较小链表指针向后移动一位 实现如下: ListNode* mergeTwo...

  • 1.直接调用微软socket对象处理 static void Main(string[] args){try{IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });//在3721端口新建一个TcpListener对象TcpListener listener = new...

  •   现在很多地方都会用到zookeeper, 用到它的地方就是为了实现分布式。用到的场景就是服务注册,比如一个集群服务器,需要知道哪些服务器在线,哪些服务器不在线。   ZK有一个功能,就是创建临时节点,当机器启动应用的时候就会连接到一个ZK节点,然后创建一个临时节点,那么通过获取监听该路径,并且获取该路径下的节点数量就知道有哪些服务...

  • 前台到后台java时data日期类型的转化 在实体类中用@DataTimeFormat,这样设置即使传过来是空的字符串也是可以转的,要和前面传过来的格式一致,如 @XmlElement(name="BeginDate") @DateTimeFormat(pattern="yyyy-MM-dd") private Date begin...