Проблема: бывает так, что при вызове soap, ответ на стороне клиента не собирается в объект, это может быть и из-за wsdl или из-за неверного ответа от сервер.
Решение: распарсить ответ от сервере как XML
// выполняем функцию SOAP $response = $this->client->__soapCall("getParam", $param); // костыль, так как первый response ничего не вернул, будем тупо парсить XML ответ $response = $this->client->__getLastResponse(); // xml парсеру не нравится тег с неймспейсами, вырезаем их $response = str_ireplace(array('soapenv:', 'tem:', 'SOAP-ENV:', 'rpc:'), '', $response); $xml = simplexml_load_string($response, "SimpleXMLElement", LIBXML_NOCDATA); $json = json_encode($xml); $arrayResponse = json_decode($json,TRUE);
Если есть ошибка при разборе, можно поиграть с параметрами
$xml = simplexml_load_string($response, «SimpleXMLElement», LIBXML_COMPACT | LIBXML_PARSEHUGE);