当前位置 : 主页 > 网页制作 > Nodejs >

webservice 入门笔记四发送header信息

来源:互联网 收集:自由互联 发布时间:2021-06-24
有时候,webservice方法传递的信息是放在header中的。比如权限认证信息等。 在接口中增加一个方法: @WebResult(name="user") public ListUser list(@WebParam(header=true, name="anthInfo")String authInfo); 实现如

有时候,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     
网友评论