Я пытаюсь использовать Zend_Soap_Client для связи с веб-сервисом ASP.net. Вот мой клиентский звонок:
$client = new Zend_Soap_Client(null, array(
'location' => 'http://example.com/service.asmx',
'uri' => 'http://example.com/'
));
$user = new UserDetail();
$result = $client->UserDetails($user);
Однако это всегда дает мне ошибку:
System.NullReferenceException: ссылка на объект не установлена для экземпляра объекта. в Service.UserDetails (UserDetail UserDetail)
некоторые поиски показали, что это довольно распространенная проблема. Казалось, что наиболее распространенным решением является передача параметров в виде массива, поэтому я попытался:
$result = $client->UserDetails(array('UserDetail' => $user));
но это дало ту же ошибку. Я также попытался передать params как объект stdClass, вложив массив в другой с параметром «params» в качестве ключа, и несколько других вещей, но ошибка всегда одинакова.
У меня есть ASP-код для самого веб-сервиса, соответствующий метод:
public Result UserDetails(UserDetail UserDetail) {
[some stuff]
Hashtable ht = new Hashtable();
ht = UserDetail.GenerateData();
}
ошибка вызвана вызовом GenerateData ().
Я предполагаю, что метод UserDetails получает значение null вместо моего объекта в качестве параметра, но я не уверен, как мне следует вызывать метод или как я могу отлаживать это дальше. Кажется, что большинство примеров Zend_Soap_Client, которые я нашел, используют WSDL, которым не является этот сервис; не уверен, что это актуально. Любая помощь приветствуется!