Я делаю свою первую попытку подключения к SOAP-серверу с PHP, и я не понимаю, как войти в систему и получить нужные мне данные. Служба, к которой я пытаюсь подключиться, – это сервис Hawley USA http://hawleyusa.com/thcServices/StoreServices.asmx ). Я смотрел несколько сообщений о том, как подключиться, и я получаю основы. Я проверил, что на моем PHP включен SOAP, и я просто пытаюсь получить список инвентаря. Вот код, который я использую:
<?php ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache $wsdl_path = "http://hawleyusa.com/thcServices/StoreServices.asmx?WSDL"; $login_id = 'mylogin_id'; $password = 'mypassword'; $client = new SoapClient($wsdl_path); try { echo "<pre>\n"; print($client->InventoryList(array("LoginID" => $login_id, "Password" => $password))); echo "\n"; } catch (SoapFault $exception) { echo $exception; }
Однако, когда я запускаю этот код, я получаю эту ошибку:
SoapFault exception: [soap:Server] Server was unable to process request. ---> Object reference not set to an instance of an object. in /Users/steve/Sites/mysite/hawley_client.php:12
При отладке я могу увидеть инициированный экземпляр $ client, поэтому я не уверен, почему я получаю эту ошибку.
Второй вопрос: правильно ли я передаю идентификатор пользователя и пароль?
Благодарю.
Обновление : я выбрал $ client -> __ getLastRequest, и это то, что я получил:
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://hawleyusa.com/thcServices/"> <SOAP-ENV:Body> <ns1:InventoryList/> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Поэтому я вижу, что мне не хватает идентификатора входа и пароля. Как добавить их в мой вызов InventoryList?
Вы близки. Глядя на WSDL, метод InventoryList принимает объект, называемый «запрос». Измените свою линию звонков немного:
$client->InventoryList(array("request" => array("LoginId" => $login_id, "Password" => $password));
Вероятно, это не тот же случай, но он также дает ту же ошибку, если вы не укажете пустые строки в полях, которые вам не нужно использовать, взятые с http://www.sitepoint.com/forums/showthread.php?755549 -SOAP-XML-объект-ссылка не-установить-к-ан-например-в-объект