You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sabre SOAP请求报错:wsse:Security前缀未绑定问题求助

问题分析与解决方案

这个错误的根源很明确:你在SOAP请求里使用了wsse前缀来标记WS-Security相关元素,但没有在根<soapenv:Envelope>标签的命名空间声明中绑定wsse前缀到对应的WS-Security命名空间。

看你的请求报文,根标签里声明的是:

xmlns:sec="http://schemas.xmlsoap.org/ws/2002/12/secext"

这里用的前缀是sec,但你后续的安全元素用的是wsse:Security、wsse:UsernameToken,XML解析器找不到wsse对应的命名空间,自然会抛出这个错误。

两种修正方案

方案1:修改命名空间前缀为wsse

直接把根标签里的sec前缀改成wsse,这样和你使用的元素前缀保持一致:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" 
                  xmlns:mes="http://www.ebxml.org/namespaces/messageHeader" 
                  xmlns:web="http://webservices.sabre.com">
  <soapenv:Header>
    <mes:MessageHeader mes:version="1">
      <mes:From>
        <mes:PartyId>Client</mes:PartyId>
      </mes:From>
      <mes:To>
        <mes:PartyId>SWS</mes:PartyId>
      </mes:To>
      <mes:CPAId>DCG</mes:CPAId>
      <mes:ConversationId>123</mes:ConversationId>
      <mes:Service>Session</mes:Service>
      <mes:Action>TokenCreateRQ</mes:Action>
      <mes:MessageData>
        <mes:MessageId>1234</mes:MessageId>
        <mes:Timestamp>2015-01-01T00:00:00</mes:Timestamp>
      </mes:MessageData>
    </mes:MessageHeader>
    <wsse:Security>
      <wsse:UsernameToken>
        <wsse:Username>USER</wsse:Username>
        <wsse:Password>PASSWORD</wsse:Password>
        <Organization>PCC</Organization>
        <Domain>DOMAIN</Domain>
      </wsse:UsernameToken>
    </wsse:Security>
  </soapenv:Header>
  <soapenv:Body>
    <web:TokenCreateRQ Version="1.0.0"/>
  </soapenv:Body>
</soapenv:Envelope>

方案2:修改元素前缀为sec

保持根标签的命名空间声明不变,把所有wsse:前缀替换成sec::

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:sec="http://schemas.xmlsoap.org/ws/2002/12/secext" 
                  xmlns:mes="http://www.ebxml.org/namespaces/messageHeader" 
                  xmlns:web="http://webservices.sabre.com">
  <soapenv:Header>
    <mes:MessageHeader mes:version="1">
      <mes:From>
        <mes:PartyId>Client</mes:PartyId>
      </mes:From>
      <mes:To>
        <mes:PartyId>SWS</mes:PartyId>
      </mes:To>
      <mes:CPAId>DCG</mes:CPAId>
      <mes:ConversationId>123</mes:ConversationId>
      <mes:Service>Session</mes:Service>
      <mes:Action>TokenCreateRQ</mes:Action>
      <mes:MessageData>
        <mes:MessageId>1234</mes:MessageId>
        <mes:Timestamp>2015-01-01T00:00:00</mes:Timestamp>
      </mes:MessageData>
    </mes:MessageHeader>
    <sec:Security>
      <sec:UsernameToken>
        <sec:Username>USER</sec:Username>
        <sec:Password>PASSWORD</sec:Password>
        <Organization>PCC</Organization>
        <Domain>DOMAIN</Domain>
      </sec:UsernameToken>
    </sec:Security>
  </soapenv:Header>
  <soapenv:Body>
    <web:TokenCreateRQ Version="1.0.0"/>
  </soapenv:Body>
</soapenv:Envelope>

补充说明

Sabre的SOAP服务遵循WS-Security规范,http://schemas.xmlsoap.org/ws/2002/12/secext是标准的WS-Security命名空间。XML的命名空间前缀和声明必须严格对应,这是XML解析的基本规则——解析器无法识别未绑定的前缀,所以才会抛出这个错误。

内容的提问来源于stack exchange,提问作者José Mendes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 10:47:27