Ошибка API SOAP: ссылка на объект не установлена ​​для экземпляра объекта - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь получить данные из SOAP API на сайте Wordpress. Я использую библиотеку PHP SoapClient.

За прошедшую неделю я изучал Интернет, пытаясь найти любое возможное решение этой проблемы, в том числе и другие библиотеки, но безуспешно. Я даже не дошел до того, что могу извлекать данные, я просто пытаюсь войти в этот сервис, который может подтвердить, что вход и другие функции работают через сторонние приложения.

Я также пытался реорганизовать свой код в его собственный класс и вызывать вещи таким образом, но возникают те же проблемы.

Я получаю одну и ту же ошибку обратно независимо от того, что я пытаюсь:

Fatal error: Uncaught SoapFault exception: [soap:Server] System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object. at NjoynDataGateway.Login(String pr_UserName, String pr_Password, Boolean pr_AbortExistingSession) --- End of inner exception stack trace

Это код, который я использую:

$url = 'https://qa1.njoyn.com/CL4/net/WebService/NjoynDataExport.asmx?wsdl';
$username = 'username';
$password = 'password';
$abort_session = true;
$namespace = "http://njoyn.com/";

$soap_client = new SoapClient($url);

// Body of the Soap Header.
$headerbody = [
    'pr_UserName' => $username,
    'pr_Password' => $password,
];

// Create Soap Header.
$header = new SOAPHeader($namespace, 'AuthHeader', $headerbody);
$soap_client->__setSoapHeaders($header);

$result = $soap_client->__SoapCall('Login', [
    'pr_UserName' => $username,
    'pr_Password' => $password,
    'pr_AbortExistingSession' => $abort_session,
]);

var_dump($result);

Ожидаемые результаты - это не ошибка с самого начала. Согласно их документации, метод входа должен возвращать true.

1 Ответ

0 голосов
/ 15 мая 2019

Для тех, кто видел это, я не смог заставить работать SOAP API.Я перепробовал все, что мог придумать.Я пробовал десятки различных подходов к кодированию, пытался подключиться к другим API-интерфейсам SOAP, которые работали без проблем.Я перепробовал множество онлайн-клиентов SOAP API, но все они потерпели неудачу, кроме одного.

Ошибка Object reference not set to an instance of an object является ответом их API.Все онлайн-клиенты SOAP, которые я попробовал и которые потерпели неудачу, использовали библиотеку PHP SoapClient, а один использовал библиотеку Node.JS.Тот, который работал, был http://www.soapclient.com/soapTest.html, который использует библиотеку C ++.Таким образом, существует потенциальная проблема с тем, как их API взаимодействует с некоторыми из этих библиотек.Я вообще не знаком со сложностями SOAP, так что это насколько я понял.К счастью для меня, они смогли предоставить мне ссылку, по которой я мог бы собрать нужные мне данные.

Надеемся, что другие, кто столкнется с этим, найдут подход, не связанный с SOAP, для решения своей проблемы.Если нет, то я бы начал изучать или связываться с ними, чтобы разобраться с их проблемами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...