Я делаю SoapCall и в настоящее время борюсь с SoapFault:
SoapFault: клиент — SOAP-ERROR: Encoding: нарушение правил кодирования
Запрос делается так:
$soapCallArgs[]['REQUEST_ID'] = $childProcessId;
try {
$response = $soapClientOrder->__soapCall('GetSaleOrder',$soapCallArgs);
} catch (SoapFault $ex) {
print 'SoapFault: ' . $ex->faultcode . ' - ' . $ex->getMessage() . "\n";
}
Значение $childProcessId
(скажем, 9999) действительно существует в ERP, с которым консультируется веб-служба, тогда он должен вернуть какой-то ответ, но вместо этого я получаю упомянутый soapfault.
Любопытно то, что когда я ввожу int (скажем, 5, которого нет в ERP) вместо $childProcessId
, я получаю ответ (пустой ответ, потому что id 5 не существует в базе данных) .
Я звоню другим веб-сервисам в той же ERP, и все они работают нормально. Именно этот получает ошибку, когда он должен возвращать значения.
Любой совет поможет, большое спасибо.
В качестве дополнительного примечания, WSDL и запрошенный php-formed XML: WSDL
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:ParametroEntrada xmlns:ns1="http://www.example.org">
<ns1:REQUEST_ID></ns1:REQUEST_ID>
</ns1:ParametroEntrada>
</soap:Body>
</soap:Envelope>
Запрошенный XML
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.org">
<SOAP-ENV:Body>
<ns1:ParametroEntrada>
<ns1:REQUEST_ID>5</ns1:REQUEST_ID>
</ns1:ParametroEntrada>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>