我正在使用PHP脚本访问gracenote的WEB API。虽然它有时会起作用,但它在大多数时候都会给我一个超时错误。这是我得到的错误:
exception:code = 2001,message =请求Gracenote WebAPI定时 out。,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);
出了什么问题?
答案 0 :(得分:1)
我遇到了同样的问题,其中每10个请求中有9个请求超时,并出现以下错误:
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
原因(我怀疑)是curl连接缺少的SSL选项参数。
我可以通过将其添加到HTTP.class.php中的第38行来永久修复。
curl_setopt($this->_ch, CURLOPT_SSLVERSION, 3);
答案 1 :(得分:1)
正如Yavor所建议的那样,问题与服务器上的SSL设置有关。但我们现在已经添加了对TLS v1.2的完全支持,因此您的原始代码应该使用默认的SSL设置。
由于POODLE漏洞,您不应使用SSL v3。
答案 2 :(得分:0)
你应该使用try / catch围绕gracenote api调用,gracenote HTTP客户端抛出各种异常