Php 调用WSDL soap方法时出错-Microsoft.Web.Services.SoapFormatException
我不熟悉SOAP和web服务,正在尝试使用PHP连接到供应商WSDL SOAP提供者。我已经成功地连接到API,并且能够下拉方法列表。但是,当我尝试对其中一个函数进行基本调用时,服务器返回了以下错误: Microsoft.Web.Services.SoapFormatException:输入不是有效的SOAP消息,因为它的名称(信封)错误,或者名称空间(信封)错误。位于Microsoft.Web.Services.SoapEnvelope.PostLoad()的Microsoft.Web.Services.SoapEnvelope.Load(流)的Microsoft.Web.Services.WebServicesExtension.BeforeDeserializeServer(SoapMessage消息) 这是我的web服务调用:Php 调用WSDL soap方法时出错-Microsoft.Web.Services.SoapFormatException,php,wsdl,Php,Wsdl,我不熟悉SOAP和web服务,正在尝试使用PHP连接到供应商WSDL SOAP提供者。我已经成功地连接到API,并且能够下拉方法列表。但是,当我尝试对其中一个函数进行基本调用时,服务器返回了以下错误: Microsoft.Web.Services.SoapFormatException:输入不是有效的SOAP消息,因为它的名称(信封)错误,或者名称空间(信封)错误。位于Microsoft.Web.Services.SoapEnvelope.PostLoad()的Microsoft.Web.Ser
$soapConnection = new SoapClient("http://webapi.testsupplier.com/gvitawapi.asmx?WSDL",array('soap_version' => SOAP_1_2, 'uri' => "http://webapi.testsupplier.com/"));
var_dump($soapConnection->GetAllTestDataXML());
这是供应商文档中的响应xml。我不确定我是否应该做些什么:
POST /gvitawapi.asmx HTTP/1.1
Host: webapi.testsupplier.com
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetAllTestDataXML xmlns="http://webapi.testsupplier.com/" />
</soap12:Body>
</soap12:Envelope>
POST/gvitawapi.asmx HTTP/1.1
主持人:webapi.testsupplier.com
内容类型:应用程序/soap+xml;字符集=utf-8
内容长度:长度
如果您能提供任何想法,我们将不胜感激 事实证明,我可以通过在连接中切换到SOAP 1.1来实现这一点。无论出于何种原因,切换到1.2都会导致相同的错误。它还通过启用异常来获取完整的响应文本来帮助我进行调试。此外,如果您想在调用这样的Web服务时传递参数,它并不像我预期的那样直接。我假设参数将在一个数组中传递,其中的值如下:
soapConnection->GetAllTestDataXML(数组('id'=>5678))
相反,参数必须进入父数组,键为'parameters':$param=array('id'=>5678)代码>$soapConnection->GetAllTestDataXML(数组('parameters'=>$param))代码>