Ошибка PHP SoapClient при ответе

Я делаю 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> 

person CodeChuck    schedule 14.01.2016    source источник


Ответы (1)


Я наконец решил это.

В XSD ответа одному из параметров было присвоено значение double, но ответ представлял собой строку. Я не знаю, почему это не было подтверждено во вставке в первую очередь.

Спасибо.

person CodeChuck    schedule 14.01.2016