Soap Web服务客户端添加多个标头元素Apache Axis

Soap Web服务客户端添加多个标头元素Apache Axis,soap,axis2,Soap,Axis2,我正在使用ApacheAxis生成web服务客户端。 我需要在请求中添加多个头元素。请在下面找到Soap UI请求正文 <soap:Header> <token xmlns="test">12345</token> <idnum xmlns="test">true</idnum> <login xmlns="test">5678</login> <iss

我正在使用ApacheAxis生成web服务客户端。 我需要在请求中添加多个头元素。请在下面找到Soap UI请求正文

   <soap:Header>
      <token xmlns="test">12345</token>
      <idnum xmlns="test">true</idnum>
      <login xmlns="test">5678</login>
      <issuer xmlns="test">welcome</issuer>
   </soap:Header>

12345
真的
5678
欢迎

你能告诉我怎么做吗。提前感谢。

您可以从SOAPEnvelope获取SOAPHeader(也可以从MessageContext获取SOAPEnvelope)

然后,您可以将SOAPHeaderBlock、OMAttribute或子元素添加到SOAPHeader。我不确定你的要求需要哪一个

您还可以使用其他重载方法来创建前面提到的元素,所以请随意尝试。下面的例子肯定远远不够完美,因为我不需要对标题做很多这样的修改,所以我没有经验。然而,我在不久前做了一点,所以请使用此示例作为深入探讨的起点

public void addHeaders(MessageContext msgContext) {
        SOAPEnvelope envelope = msgContext.getEnvelope();
        SOAPHeader header = envelope.getHeader();
        // adding HeaderBlock
        header.addHeaderBlock(new QName("http://some.name.space","localPartName"));
        // adding OMAttribute
        OMAttributeImpl omAttribute = new OMAttributeImpl();
        omAttribute.setAttributeType("type_of_attribute");
        omAttribute.setAttributeValue("some_value");
        omAttribute.setOMNamespace(new OMNamespaceImpl("http://some.uri", "somePrefix"));
        header.addAttribute(omAttribute);
        // add a child created with OMFactory
        OMNamespace omNamespace = new OMNamespaceImpl("http://some.other.uri", "someOtherPrefix");
        OMElement element = OMAbstractFactory.getOMFactory().createOMElement("sth", omNamespace);
        element.addAttribute("attr1", "attr1_Value", omNamespace);
        element.addAttribute("attr2", "attr2_Value", omNamespace);
        header.addChild(element);
    }