当尝试使用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);
谢谢!
答案 0 :(得分: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);
答案 1 :(得分:0)
尝试在/etc/resolv.conf中添加第二个名称服务器 例如:nameserver 8.8.8.8 这是谷歌名称服务器
我在使用codebird.php时发现了同样的问题。我正在暂停。
我们的名字服务器工作,但它似乎偶尔会超时。当我添加第二个名称服务器时,问题就消失了。