微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

webservice 入门笔记四发送header信息

有时候,webservice方法传递的信息是放在header中的。比如权限认证信息等。

 

在接口中增加一个方法

@WebResult(name="user")
   public List<User> list(@WebParam(header=true,name="anthInfo")String authInfo);
 

实现如下:

@Override
   public List<User>list(String authInfo) {
      System.out.println(authInfo);
      if("123456".equals(authInfo)){
         returnusers;
      }else {
         System.out.println("auth error!");
         returnnull;
      }
   }


Test方法如下:

 

 /**
          * <p>Title: 带header信息</p>
          * <p>Description: </p>
          * @author zhutulang
          * @version 1.0
          * @throws SOAPException
          * @throws IOException
          * @throws JAXBException
          */
         @Test
         public void test4() throws SOAPException,IOException,JAXBException {
      //1.创建服务
      URL url = new URL(wsdlUrl);
      QName qName = new QName(namespaceUrl,"MyServiceInterImplService");
      Service service = Service.create(url,qName);
     
      //2.创建dispatch
      dispatch<SOAPMessage> dispatch =
            service.createdispatch(new QName(namespaceUrl,"MyServiceInterImplPort"),SOAPMessage.class,Service.Mode.MESSAGE);
     
      //3.创建SOAPMessage
      SOAPMessage msg = MessageFactory.newInstance().createMessage();
      SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
      SOAPBody body = envelope.getBody();
     
      //header信息
      SOAPHeader header = envelope.getHeader();
      if(header == null){
         header = envelope.addHeader();
      }
      QName hname = new QName(namespaceUrl,"authInfo","ns");
      header.addHeaderElement(hname).setValue("123456");
     
      //4.创建QName来指定消息中传递的数据
      QName ename = new QName(namespaceUrl,"list","ns");
      body.addBodyElement(ename);
      msg.writeto(System.out);
      System.out.println();
     
      //5.通过distpatch传递信息
      SOAPMessage responseMsg = dispatch.invoke(msg);
      responseMsg.writeto(System.out);
      System.out.println();
     
      //6.将响应的消息转换为dom对象
      Document doc =  responseMsg.getSOAPBody().extractContentAsDocument();
      NodeList nl = doc.getElementsByTagName("user");
      JAXBContext ctx = JAXBContext.newInstance(User.class);
      for(int i=0;i<nl.getLength();i++) {
         Node n = nl.item(i);
         User u = (User)ctx.createUnmarshaller().unmarshal(n);
         System.out.println(u);
      }
   }

 相关的代码下载: http://download.csdn.net/detail/zhutulang/9487929     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐