Время ожидания запроса к веб-API Gracenote истекло

Я использую PHP-скрипт для доступа к веб-API Gracenote. Хотя иногда это работает, в большинстве случаев выдает ошибку тайм-аута. Вот ошибка, которую я получаю:

исключение: код = 2001, сообщение = время ожидания запроса к Gracenote WebAPI истекло., ext = PHP Неустранимая ошибка: необработанное исключение «Gracenote\WebAPI\GNException» с сообщением «Время ожидания запроса к Gracenote WebAPI истекло». в /home/kubuntu/Downloads/php-gracenote-master/php-gracenote-master/php-gracenote/HTTP.class.php:1

Вот мой очень простой код:

<?php
include("./php-gracenote/Gracenote.class.php");

$clientID  = ""; 
$clientTag = ""; 

$api = new Gracenote\WebAPI\GracenoteWebAPI($clientID, $clientTag); 
$userID = "xxxxxxxxxxxxxxxxxx";
echo "UserID = ".$userID."\n";

$results = $api->searchArtist("Bob Dylan");
var_dump($results);

Что я делаю неправильно?


person Akshay    schedule 14.08.2014    source источник


Ответы (3)


Вы должны использовать try/catch, чтобы окружить вызовы API Gracenote, HTTP-клиент Gracenote выдает различные исключения.

например https://github.com/richadams/php-gracenote/blob/25e0346443dd5026a4bc9f0d62a589d44bdc133b/php-gracenote/HTTP.class.php#L110

person Xuphey    schedule 14.08.2014
comment
Спасибо, это решило проблему. Однако, чтобы наконец работать, требуется много исключений. - person Akshay; 15.08.2014
comment
На самом деле код не дает сбоев сейчас, но все же для получения результатов требуется вечность. Я думаю, что что-то очень не так с тем, как я получаю доступ к данным. - person Akshay; 15.08.2014

У меня была та же проблема, когда каждые 9 из 10 запросов соединение прерывалось со следующей ошибкой:

http: external request POST url=https://1234567.web.cddbp.net/webapi/xml/1.0/, timeout=20000 exception: code=2001, message=Request to a Gracenote WebAPI timed out., ext=0 
Fatal error: Uncaught exception 'Gracenote\WebAPI\GNException' with message 'Request to a 
Gracenote    WebAPI timed out.' in /usr/samba/dev/gracenote/php-gracenote/php-  
gracenote/HTTP.class.php:110 Stack trace: #0 /usr/samba/dev/gracenote/php-gracenote/php-
gracenote/HTTP.class.php(94): Gracenote\WebAPI\HTTP->validateResponse(false) #1 
/usr/samba/dev/gracenote/php-gracenote/php-gracenote/HTTP.class.php(144): Gracenote\WebAPI\HTTP-
>execute() #2 /usr/samba/dev/gracenote/php-gracenote/php-gracenote/Gracenote.class.php(59): 
Gracenote\WebAPI\HTTP->post('<QUERIES>? ...') #3 /usr/samba/dev/gracenote/php-
gracenote/example.php(31): Gracenote\WebAPI\GracenoteWebAPI->register() #4 {main} thrown in 
/usr/samba/dev/gracenote/php-gracenote/php-gracenote/HTTP.class.php on line 110    

Причина (я подозреваю) заключается в отсутствующем параметре опции SSL для соединения curl.

Я смог исправить это навсегда, добавив это в строку 38 в HTTP.class.php.

    curl_setopt($this->_ch, CURLOPT_SSLVERSION,     3);
person Yavor    schedule 31.08.2014

Как предположил Явор, проблема была связана с настройками SSL на сервере. Но теперь мы добавили полную поддержку TLS v1.2, поэтому исходный код должен работать с настройками SSL по умолчанию.

Вы не должны использовать SSL v3 из-за уязвимости POODLE.

person cweichen    schedule 17.10.2014