我需要使用此.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 @获取版本号.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 Action添加为标头没有帮助。
在这种情况下,curl命令为:
curl -H“SOAP操作:“-d @获取版本号.xml“
回答是:
<faultstring>Server did not recognize the value of HTTP Header SOAPAction: http://tempuri.org/YSI.Interfaces.WebServices/ItfResidentData/GetVersionNumber.</faultstring>
2条答案
按热度按时间bpzcxfmw1#
您需要提供
SOAPAction
作为HTTP头,而不是SOAP头,下面是使用SoapUI执行时完整请求的外观(注意第四行):对于
curl
,您可以使用-H
参数来发送SOAPAction
报头,但我建议您使用use SoapUI作为初步使用(它默认包含SOAPAction
报头,并且随时都能击败控制台)。如果您确实需要使用
curl
,请尝试类似这样的操作(所有内容必须在一行上;为便于阅读而分开):在
GetVersionNumber.xml
文件中使用以下代码:kknvjkwl2#
可能没有人再使用asmx文件了--但我是:),而且刚刚遇到了这个问题。一般的问题是,.net没有任何迹象表明这是一个处理SOAP请求等事务的WebMethod。
其他的答案可能以它们自己的方式是有效的,但是对于超级简单的情况,确保您的方法用[WebMethod]属性来装饰解决了我的问题。
该属性可能还负责将响应 Package 在SOAP Package 器中。
啊,微软。这么多的自动化,但更长的学习曲线。