gpt4 book ai didi

asp.net - 使用 Web 服务导致 “Unable to handle request without a valid action parameter”

转载 作者:行者123 更新时间:2023-12-02 16:40:50 31 4
gpt4 key购买 nike

我需要使用此 .NET 站点上的 Web 服务:

https://www.iyardiasp.com/8223third_17/webservices/ItfResidentData.asmx

对于初步消耗,我使用 Fiddler 或curl。两者都给出相同的错误:

<faultstring>Unable to handle request without a valid action parameter. Please supply a valid soap action.</faultstring> 

我的curl命令:

curl -d @GetVersionNumber.xml https://www.iyardiasp.com/8223third_17/webservices/ItfResidentData.asmx

请参阅下面的文件 GetVersionNumber.xml:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetVersionNumber xmlns="http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData" />
</soap:Body>
</soap:Envelope>

将 SOAP-ENV:Header 添加为soap:Envelope 中的元素没有帮助

<SOAP-ENV:Header Content-Type="text/xml" Host="www.iyardiasp.com" SOAPAction="http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData/GetVersionNumber"/>

将 Soap 操作添加为 header 并没有帮助。

在这种情况下,curl 命令是:

curl -H“SOAPAction:http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData/GetVersionNumber”-d @GetVersionNumber.xml“https://www.iyardiasp.com/8223third_17/webservices/itfapplicantscreening.asmx

响应是:

<faultstring>Server did not recognize the value of HTTP Header SOAPAction: http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData/GetVersionNumber.</faultstring>

最佳答案

您需要提供SOAPAction as a HTTP header ,而不是 SOAP header 。以下是使用 SoapUI 执行时完整请求的样子(注意第四行):

POST /8223third_17/webservices/ItfResidentData.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData/GetVersionNumber"
User-Agent: Jakarta Commons-HttpClient/3.1
Host: www.iyardiasp.com
Content-Length: 260

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:itf="http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData">
<soapenv:Body>
<itf:GetVersionNumber/>
</soapenv:Body>
</soapenv:Envelope>

对于curl,您可以使用-H参数来发送 SOAPAction header ,但我建议您 use SoapUI供您初步使用(默认情况下它包含 SOAPAction header ,并且随时都会击败控制台)。

如果您确实需要使用curl,请尝试这样的操作(所有内容必须在一行上;为了可读性而分开):

curl -H "Content-Type: text/xml;charset=UTF-8" 
-H "SOAPAction: \"http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData/GetVersionNumber\""
-d @GetVersionNumber.xml
https://www.iyardiasp.com/8223third_17/webservices/ItfResidentData.asmx

GetVersionNumber.xml 文件中使用此内容:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:itf="http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData">
<soapenv:Body>
<itf:GetVersionNumber/>
</soapenv:Body>
</soapenv:Envelope>

关于asp.net - 使用 Web 服务导致 “Unable to handle request without a valid action parameter”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162991/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com