我工作的地方我使用的是內部託管第三方應用程序的SOAP API(BMC FootPrints產品服務的核心)的項目。我可以用PHP調用API,我的憑證沒有問題,並且在一個特定的API方法中,我正在對API函數進行有效調用,但得到以下異常/錯誤:如何解決這個SOAP異常「解組錯誤」
SoapFault exception: [soap:Client] Unmarshalling Error: cvc-complex-type.2.4.b: The content of element 'ns1:runSearch' is not complete. One of '{runSearchRequest}' is expected
什麼是「‘{} runSearchRequest’預計」部分的一個意味着什麼?我不明白還有什麼我需要我做的API請求包括。
的API文檔可以在這裏特別發現,31頁指的是API方法我想使用這裏記錄了這個截圖:image from PDF
我不會發布的所有代碼,但只是一部分,我試圖API方法:
// array that will be used in the method call...
$searchFor = array(
"_searchId"=>"11",
);
try {
$response = $soapClient->__soapCall("runSearch", $searchFor);
print_r($response);
} catch (SoapFault $exception) {
echo $exception;
}
我測試了SOAPUI的applcation方法調用,我能看到結果/響應的罰款。
更新:添加WSDL XML(摘錄)...
我使用的是WSDL,但其託管我們的內部/本地網絡上,而不是暴露於外部,這裏的XML的開始和runSearch類型從WSDL:
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://externalapi.business.footprints.numarasoftware.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="ExternalApiService" targetNamespace="http://externalapi.business.footprints.numarasoftware.com/">
<wsdl:types>
<schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xxxxxxxxxxxxxxxxxxxx.com/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="xxxxxxxxxxxxxxxxxxxxxxxx" schemaLocation="http://xxxxxxxxxxxxxxxxxxxxxxxx:PORT/footprints/servicedesk/externalapisoap/ExternalApiServicePort?xsd=externalapiservices_schema.xsd"/>
</schema>
</wsdl:types>
...
<wsdl:message name="runSearch">
<wsdl:part element="tns:runSearch" name="parameters">
</wsdl:part>
</wsdl:message>
謝謝@KrisPeeling - 我只是固定的問題,我在我原來的職位更新的代碼。我仍然得到相同的結果/異常消息,就好像結構中缺少某些東西一樣。 – tamak
感謝您更改問題。我已經更新了我的答案,希望能幫助你解決錯誤。 –
謝謝,我嘗試後得到的是「SoapFault異常:[客戶端] SOAP-ERROR:編碼:對象沒有'runSearchRequest'屬性」 – tamak