Ну вот API, который я пытаюсь использовать: http://www.hotelscombined.com/api/LiveRates.asmx?op=HotelSearch
Вот код, который я пробовал:
<code>$client = new SoapClient('http://www.hotelscombined.com/api/LiveRates.asmx?WSDL');
echo '<pre>'; var_dump($client->__getFunctions()); echo '
';
// поскольку вышеприведенная строка возвращает функции, я предполагаю, что все в порядке, но до этого момента
пытаться
{
$ Клиент -> __ soapCall ( 'HotelSearch',
массив (
'ApiKey' => 'THE_API_KEY_GOES_HERE', // обратите внимание, что в фактическом коде я поместил ключ API в ...
'UserID' => session_id (),
'UserAgent' => $ _SERVER ['HTTP_USER_AGENT'],
'UserIPAddress' => $ _SERVER ['REMOTE_ADDR'],
'HotelID' => '50563',
'Checkin' => '07 / 02/2009 ',
'Checkout' => '07 / 03/2009 ',
'Гости' => '2',
'Rooms' => '1',
'LanguageCode' => 'en',
'DisplayCurrency' => 'usd',
'TimeOutInSeconds' => '90'
)
);
}
поймать (исключение $ e)
{
echo $ e-> getMessage ();
}
В любом случае это вызывает исключение и повторяет следующее:
Server was unable to process request. ---> Object reference not set to an instance of an object.
ПРИМЕЧАНИЕ: я никогда раньше не использовал SOAP, поэтому возможно, что я просто делаю что-то в корне неправильно, даже небольшой совет, чтобы направить меня в правильном направлении, был бы очень признателен
Том Хейг предложил обернуть значения в другой массив, который, похоже, возвращает одно и то же сообщение об ошибке: (Я всегда пытался изменить целые числа, чтобы они были в целочисленной форме и совпадали с датами)
try
{
$client->__soapCall('HotelSearch',
array('request' =>
array(
'ApiKey' => 'THE_API_KEY_GOES_HERE', // note that in the actual code I put the API key in...
'UserID' => session_id(),
'UserAgent' => $_SERVER['HTTP_USER_AGENT'],
'UserIPAddress' => $_SERVER['REMOTE_ADDR'],
'HotelID' => '50563',
'Checkin' => '2009-07-02',
'Checkout' => '2009-07-03',
'Guests' => 2,
'Rooms' => 1,
'LanguageCode' => 'en',
'DisplayCurrency' => 'usd',
'TimeOutInSeconds' => 90
) )
);
}
catch (Exception $e)
{
echo $e->getMessage();
}