调用SOAP WSDL接口时CURL请求需要添加哪些请求头?
问题原因
你收到的ActionNotSupported错误是因为SOAP请求缺少必填的SOAPAction头,基于.NET开发的SOAP服务端需要通过该头匹配对应的接口方法,你当前只配置了Content-Type头,所以服务端识别不出要调用的方法。
解决方法
修改请求头数组,添加对应方法的SOAPAction头即可,你调用的GetEnvios方法所属命名空间为http://tempuri.org/,对应SOAPAction值为http://tempuri.org/GetEnvios。
修改后的代码示例:
$headers = array( "Content-type: text/xml;charset=\"utf-8\"", "SOAPAction: \"http://tempuri.org/GetEnvios\"" );
额外排查建议
- 确认代码中的
$url变量和SOAP UI中使用的请求地址完全一致,不要遗漏.asmx/.svc这类服务后缀 - 若修改后仍报错,可以查看SOAP UI发送的原始请求头,直接复用其中的SOAPAction值即可
内容的提问来源于stack exchange,提问作者Sergi Tomé
相关产品推荐
相关产品推荐

