[英]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.