Когда я запускаю следующий скрипт, я получаю «Объект класса stdClass не может быть преобразован в строку для запроса SOAP» ошибка на линии $client->LatLonListZipCode($args)
и I не может понять, почему. Есть идеи?Объект класса stdClass не может быть преобразован в строку для запроса SOAP
<?php
$contextOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
),
'http' => array(
'timeout' => 5 //seconds
)
);
//create stream context
$stream_context = stream_context_create($contextOptions);
//create client instance (over HTTPS)
$client = new SoapClient('http://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl', array(
'cache_wsdl' => WSDL_CACHE_NONE,
'exceptions' => 1,
'trace' => 1,
'stream_context' => $stream_context,
'soap_version'=> SOAP_1_2,
'connection_timeout' => 5 //seconds
));//SoapClient
$args = new stdClass();
$args->zipCodeList = '10001';
$z = $client->LatLonListZipCode($args);
'LatLonListZipCode' ожидает строку как параметр, в то время как вы передаете' stdClass'. Нечего добавлять, если вы не поделитесь знаниями о ожидаемом списке параметров «LatLonListZipCode». 'SoapClient' [управляет строковыми экземплярами] (http://php.net/manual/en/class.soapclient.php). – mudasobwa
@mudasobwa - Я не претендую на роль эксперта SOAP, но мне кажется, что WSDL ожидает, что строка будет передана ему как параметр с именем zipCodeList. Если я делаю '$ client-> LatLonListZipCode ('10001')', как он узнает, что такое имя параметра? Тем не менее, я попробовал и получил «PHP Fatal error: Uncaught SoapFault exception: [SOAP-ENV: Client] Операция '' не определена в WSDL для этой ошибки службы – neubert
Не могли бы вы попытаться использовать' $ client -> __ soapCall ('LatLonListZipCode', массив ('zipCodeList' => array ('10001'))) '[' __soapCall'] (http://php.net/manual/de/soapclient.soapcall.php) всегда просто работал для меня. – mudasobwa