Я могу отправить следующий XML-файл в веб-сервис, и я получаю идентификатор ответа, которого я ожидаю.PHP SOAP-клиент и пространства имен
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<Body>
<logon xmlns="http://tempuri.org/">
<username>USRNAME</username>
<password>b5059e852207a</password>
</logon>
</Body>
</Envelope>
Я сейчас пытаюсь преобразовать это, чтобы использовать PHP SOAP-клиент. Я делаю следующий вызов
$soapclient = new SoapClient('http://*********.co.uk/ws-b/WebservicesPTP.asmx?wsdl');
и я могу получить список функций:
$functions = $soapclient->__getFunctions();
, но когда я пытаюсь использовать метод входа в систему:
$params = array('username' => 'USRNAME', 'password' => 'b5059e852207a');
$response = $soapclient->logon($params);
я не получаю любое возвращение вообще.
Я подозреваю, что это что-то с пространством имен, но у меня есть два на конверте и один на входе в систему. Нужно ли мне это, и если да, то как добавить их в SOAP-клиент?
EDIT: Я получаю следующее сообщение об ошибке PHP:
PHP Fatal error: Uncaught SoapFault exception: [soap:Server] rt.exception.RTException: Object reference not set to an instance of an object
Трудно сказать, что не так, потому что мы ничего не знаем о WSDL. Вы можете отслеживать тело запроса, используя: ['__getLastRequest()'] (http://php.net/manual/en/soapclient.getlastrequest.php). Вспомните о наборе 'trace => true' в конструкторе SoapClient. –
Я только что пробовал это, но я даже не прошел мимо входа в систему. Если я ставлю простое тестовое сообщение после вызова, я не получу этот вывод. – bigfatfrog
Я получаю следующую ошибку PHP: - PHP Fatal error: Uncaught SoapFault exception: [soap: Server] rt.exception.RTException: ссылка на объект не установлена в экземпляр объекта – bigfatfrog