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

webservice 入门笔记四发送header信息

发布时间:2020-12-16 22:18:36 所属栏目:安全 来源:网络整理
导读:有时候,webservice方法传递的信息是放在header中的。比如权限认证信息等。 ? 在接口中增加一个方法: @WebResult(name="user") public ListUser list(@WebParam(header=true,name="anthInfo")String authInfo); 实现如下: @Override public ListUserlist(S

有时候,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 ? ??

(编辑:李大同)

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

    推荐文章
      热点阅读