簡體   English   中英

沒有有效的 SOAPaction 無法訪問 WSDL

[英]Can't access WSDL without valid SOAPaction

我正在嘗試查看 WSDL 響應以獲取操作列表,但如果沒有有效的 SOAPAction header,它總是會失敗。將 SOAPAction 設置為空字符串會返回相同的錯誤。

Server did not recognize the value of HTTP Header SOAPAction: <some-value>

像這樣使用內容類型可選值會返回相同的錯誤:

application/soap+xml; charset=utf-8; action=<some-value>

獲得包含一組有效操作的完整 WSDL 響應的正確操作順序是什么? 盡管使用記錄的操作名稱,其他請求仍會失敗並出現相同的錯誤。 可能它在 WSDL 中列出的不同


如果我向記錄的 wsdl url https://lite.realtime.nationalrail.co.uk/OpenLDBWS/wsdl.aspx?ver=2021-11-01發出 POST 請求

我得到這樣的文件:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
    xmlns:tns="http://thalesgroup.com/RTTI/2021-11-01/ldb/"
  targetNamespace="http://thalesgroup.com/RTTI/2021-11-01/ldb/">
    <wsdl:import namespace="http://thalesgroup.com/RTTI/2021-11-01/ldb/" location="rtti_2021-11-01_ldb.wsdl" />
    <wsdl:service name="ldb">
        <wsdl:port name="LDBServiceSoap" binding="tns:LDBServiceSoap">
            <soap:address location="https://lite.realtime.nationalrail.co.uk/OpenLDBWS/ldb12.asmx" />
        </wsdl:port>
        <wsdl:port name="LDBServiceSoap12" binding="tns:LDBServiceSoap12">
            <soap12:address location="https://lite.realtime.nationalrail.co.uk/OpenLDBWS/ldb12.asmx" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>

如果我然后向列出的服務地址https://lite.realtime.nationalrail.co.uk/OpenLDBWS/ldb12.asmx發出 POST 請求,我得到 401 未授權。

然后我可以發送一個 SOAP 文檔,其中包含我擁有的服務令牌,例如

<?xml version="1.0"?>
<SOAP-ENV:Envelope 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:service="http://thalesgroup.com/RTTI/2014-02-20/ldb/" xmlns:types="http://thalesgroup.com/RTTI/2010-11-01/ldb/commontypes">
  <SOAP-ENV:Header>
    <types:AccessToken>
      <types:TokenValue>{{token}}</types:TokenValue>
    </types:AccessToken>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

但隨后得到 500 內部服務器錯誤:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Client</faultcode>
            <faultstring>Unable to handle request without a valid action parameter. Please supply a valid soap action.</faultstring>
            <detail />
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

但是我沒有使用任何值,因為SOAPAction header 返回除 Server 以外的任何Server did not recognize the value of HTTP Header SOAPAction: valuehere 添加?WSDL到 url 什么都不做。

對於任何未來的谷歌員工:我在以下位置找到了正確的 wsdl:

https://lite.realtime.nationalrail.co.uk/OpenLDBWS/rtti_2021-11-01_ldb.wsdl

它列出了我可以用來克服該錯誤的實際 SOAPAction 值。

現在我變得更加無助了......

<soap:Fault>
    <soap:Code>
        <soap:Value>soap:Receiver</soap:Value>
    </soap:Code>
    <soap:Reason>
        <soap:Text xml:lang="en">Unexpected server error</soap:Text>
    </soap:Reason>
    <soap:Detail />
</soap:Fault>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM