0

尝试使用 cUrl 和 PHP 连接到 Twitter api 时,我收到以下错误:

无法解析主机“search.twitter.com”

在它工作正常之前,该请求在我的浏览器中工作。尝试连接到 example.com 时,我确实获得了该页面。我也试过下面的代码,我得到了同样的错误:

$_h = curl_init();curl_setopt($_h, CURLOPT_HEADER, 1);
curl_setopt($_h, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($_h, CURLOPT_HTTPGET, 1);
curl_setopt($_h, CURLOPT_URL, 'http://www.example.com' );
curl_setopt($_h, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
curl_setopt($_h, CURLOPT_DNS_CACHE_TIMEOUT, 2 );

var_dump(curl_exec($_h));
var_dump(curl_getinfo($_h));
var_dump(curl_error($_h));

这可能是DNS问题吗?是否有任何其他选项可以使用 PHP 获取 JSON 数据?

编辑:这是最初出现错误的代码:

$json_url = "https://search.twitter.com/search.json?q=" . 'bitterrific' . "&rpp=10&result_type=all";
    $ch = curl_init();
    $timeout = 100;
    curl_setopt($ch,CURLOPT_URL,$json_url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    //curl_close($ch);
    $content = json_decode($data);
    $output = array();
    echo "DATA: ".curl_error($ch);

谢谢!

4

2 回答 2

1

我没有发现你的代码有问题。

search.twitter.com 也有效:

$ host search.twitter.com
search.twitter.com is an alias for s.twitter.com.
s.twitter.com has address 199.59.148.11
s.twitter.com has address 199.59.149.243
s.twitter.com has address 199.59.148.84

您应该检查服务器的 DNS 设置。

您还要求使用 PHP 获取 json 数据的其他方法。PHP 接受用作远程文件的 url。所以你可以尝试这样的事情:

$content = file_get_contents("https://search.twitter.com/search.json?q=" . 'bitterrific' . "&rpp=10&result_type=all");
$content = json_decode($content);
var_dump($content);
于 2013-04-26T20:02:38.183 回答
0

尝试向 /etc/resolv.conf 添加第二个名称服务器,例如:nameserver 8.8.8.8,即 google 名称服务器

我在使用 codebird.php 时发现了同样的问题。我正在超时。
我们的名称服务器工作正常,但它似乎偶尔超时。当我添加第二个名称服务器时,问题就消失了。

于 2016-11-23T01:20:22.513 回答