我是SOAP和Web服務的新手,並試圖使用PHP連接到供應商WSDL SOAP提供程序。我已成功連接到API,並能夠下拉方法列表。然而,當我嘗試做一個基本呼叫的功能之一,我得到這個錯誤返回從服務器返回:調用WSDL soap方法時出錯 - Microsoft.Web.Services.SoapFormatException
Microsoft.Web.Services.SoapFormatException:輸入是不是因爲它有效的SOAP消息有錯誤的名稱是Envelope或錯誤的名稱空間,它是http://www.w3.org/2003/05/soap-envelope。在Microsoft.Web.Services.SoapEnvelope.PostLoad()在Microsoft.Web.Services.SoapEnvelope.Load(流流)在Microsoft.Web.Services.WebServicesExtension.BeforeDeserializeServer(的SOAPMessage消息)
這是我的網頁服務電話:
$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>
任何想法,你可以提供將非常感激!
另外,如果你想在你的調用中傳遞這樣的web服務的參數,它並不像我預期的那樣直截了當。我假設參數將傳遞到一個數組中,其中的值如下: '$ soapConnection-> GetAllTestDataXML(array('id'=> 5678));' 相反,參數必須進入父數組,帶有'參數'鍵: '$ param = array('id'=> 5678);' '$ soapConnection-> GetAllTestDataXML(array('parameters'=> $ param));'' – theninjasquad 2012-03-14 13:08:20