【发布时间】:2014-11-08 02:47:56
【问题描述】:
我需要一种方法来检查推文是否存在。我有类似 https://twitter.com/darknille/status/355651101657280512 这样的推文链接。我最好想要一种快速的检查方法(无需检索页面正文,只需 HEAD 请求),所以我尝试了类似的方法
function if_curl_exists($url)
{
$resURL = curl_init();
curl_setopt($resURL, CURLOPT_URL, $url);
curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($resURL, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback');
curl_setopt($resURL, CURLOPT_FAILONERROR, 1);
$x = curl_exec ($resURL);
//var_dump($x);
echo $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE);
curl_close ($resURL);
if ($intReturnCode != 200 && $intReturnCode != 302 && $intReturnCode != 304) {
return false;
}
else return true;
}
或者像这样
function if_curl_exists_1($url)
{
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, true);//head request
$result = curl_exec($curl);
$ret = false;
if ($result !== false) {
//if request was ok, check response code
echo $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$ret = true;
}
}
curl_close($curl);
return $ret;
}
但是这两个都返回 null 和 curl_exec(),没有什么可以检查 http 状态代码。
另一种方法是使用twitter api,例如GET statuses/show/:idhttps://dev.twitter.com/docs/api/1.1/get/statuses/show/%3Aid,但是如果tweet不存在则没有特殊的返回值,如此处所述https://dev.twitter.com/discussions/8802
我需要建议最快的检查方法是什么,我正在使用 php。
【问题讨论】:
-
如果没有推文匹配
id,twitter API 调用会返回什么? -
文档对此只字未提,您可以在上面的链接中阅读。