【问题标题】:javax.xml.stream.XMLStreamException: prefix Rebinding errorjavax.xml.stream.XMLStreamException:前缀重新绑定错误
【发布时间】:2018-06-22 06:26:01
【问题描述】:

错误:

javax.xml.stream.XMLStreamException: prefix com has been already bound to http://myurl  Rebinding it to http://www.w3.org/2005/08/addressing is an error

我有以下肥皂请求:

<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" 
            xmlns:env="http://www.w3.org/2003/05/soap-envelope">
   <S:Header xmlns="http://www.w3.org/2005/08/addressing">
      <To></To>
      <Action></Action>
      <ReplyTo>
         <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
      </ReplyTo>
      <FaultTo>
         <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
      </FaultTo>
      <MessageID></MessageID>
   </S:Header>
   <S:Body xmlns="http://www.****.com/ns/2008/03/01/webservices/***/Cache_1" 
   xmlns:ns2="http://www.****.com/ns/2006/05/01/webservices/***/Common_1" 
   xmlns:ns3="http://www.***.com/ns/2006/05/01/webservices/***/Faults_1" 
   xmlns:ns4="http://www.****.com/ns/2006/05/01/webservices/***/QuotesCommon" 
   xmlns:ns5="http://www.***.com/ns/2006/05/01/webservices/***/Quotes_1" 
   xmlns:ns6="http://schemas.****.com/2003/10/Serialization/">
      ********
   </S:Body>
</S:Envelope>

我在标题中添加授权令牌,如下所示

<S:Header xmlns="http://www.w3.org/2005/08/addressing">
      *****
      <com:Authorization xmlns:com="http://myurl">
         <com:ApplicationID>******</com:ApplicationID>
         <com:Token>*******</com:Token>
      </com:Authorization>
   </S:Header>

处理程序中的 java 代码在标头中添加授权令牌

SOAPHeader header = envelope.getHeader();
SOAPElement authorization = header.addChildElement("com:Authorization");
                authorization.addNamespaceDeclaration("com", "http://myurl");  
                SOAPElement applicationID =  authorization.addChildElement("com:ApplicationID");
                applicationID.addTextNode("*******");
                SOAPElement token = authorization.addChildElement("com:Token");
                token.addTextNode("*****");

我面临错误:

javax.xml.ws.WebServiceException: javax.xml.stream.XMLStreamException: prefix com has been already bound to http://myurl. Rebinding it to http://www.w3.org/2005/08/addressing is an error

我在发送请求之前得到的授权标头标签如下

<com:Authorization xmlns:com="http://www.w3.org/2005/08/addressing">
   <com:ApplicationID>*****</com:ApplicationID>
   <com:Token />
</com:Authorization>

等待回复

【问题讨论】:

    标签: java soap soap-client webservice-client


    【解决方案1】:

    我应用了以下代码,它对我有用

    SOAPElement 授权 = header.addChildElement("Authorization","","http://www.reuters.com/ns/2006/05/01/webservices/rkd/Common_1");

    这给了我如下授权标头:

    <Authorization xmlns="http://www.reuters.com/ns/2006/05/01/webservices/rkd/Common_1">
        <ApplicationID>********</ApplicationID>
       <Token>*******</Token>
    </Authorization>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多