Я пытаюсь использовать сторонний SOAP API. API, очевидно, был создан с помощью C #, и он использует набор данных — то есть сложные данные.
Мой мыльный клиент на PHP.
Я ожидал, что смогу сделать что-то вроде этого:
class Person {
function Person ($email) {
$this->FieldName = SOME_CONSTANT;
$this->FieldValue = $email;
}
}
$signOn = array("UserName" => "myUserName", "PassWord" => "myPassWord");
$sp = new SoapClient("https://lab6.xxxxxxxxxhost.com/xxxxxxxxx/gwwebgst.asmx?WSDL", $signOn);
$person = new Person ("[email protected]");
$params = array("parintStart" => 0,
"parintEnd" => 1000,
"parstrSortBy" => 0,
"parblnSortAsc" => true,
"parOUTintCount" => 0,
"pardstGST" => $person);
$ret = $sp->__soapCall("ReadGuestListSearch", array($params));
Но это дает мне ответ примерно так:
Исключение SoapFault: [soap: Server] Серверу не удалось обработать запрос. —> Ссылка на объект не установлена на экземпляр объекта. в GW01.php: 27
Я пробовал следующее:
1) $ person в виде массива (‘FieldName’ => … ‘FieldValue’ => …); тот же результат.
2) создание $ person в виде строки XML на основе спецификаций сторонних производителей. тот же результат.
3) поиск способа построить набор данных как прямые двоичные данные — я не нашел спецификации, но все еще думаю, что это может сработать.
Вопрос:
а) Есть ли у кого-нибудь способ связи из PHP в SOAP через сфабрикованный набор данных?
б) Кто-нибудь знает, если это необходимо? Есть ли более простой способ для меня сделать это? (Конечная цель — передать третьим сторонам 2 фрагмента информации и вернуть соответствующие данные.)
Я был бы очень признателен за любое руководство или помощь!
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …