错误:无法打开流:HTTP请求失败!使用for循环读取JSON数据时

时间:2012-10-07 03:18:45

标签: php json twitter

我正在创建一个webapp,收集Twitter用户关于某些关键字(在PHP中)的所有评论,并且我使用此URL:http://search.twitter.com/search.json

问题是:我使用for循环来检索所有注释,当涉及到第21页时,它会抛出此错误:

Warning: file_get_contents(http://search.twitter.com/search.json?page=21&max_id=254777971188039680&q=love&rpp=100&result_type=mixed): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in C:\xampp\htdocs\cs2\action.php on line 30

但是,如果我通过输入该网址访问上述链接(http://search.twitter.com/search.json?page=21&max_id=254777971188039680&q=love&rpp=100&result_type=mixed)浏览器的地址栏,它仍然返回结果!

那么,为什么这个链接可以通过浏览器直接访问,但file_get_contents函数无法读取?

//添加了代码:

<?php
    $keyword1 = $_POST["key"];
    $keyword = str_replace(' ', '%20',$keyword1);
    $url = "http://search.twitter.com/search.json?q=$keyword&rpp=100&result_type=mixed";
    $json_string = file_get_contents($url);
    $data = json_decode($json_string);
    $olddata = $data;
    $size = count($data->{"results"});
    $_SESSION["dem"] = 0;
    for($i = 0; $i < $size;$i++){
        echo($data->{"results"}[$i]->{"text"}."<br/>");
        $_SESSION["dem"]++;
    }
    while(true){
        try{
        sleep(0.01);
        $url = "http://search.twitter.com/search.json".$olddata->{"next_page"};
        if(strcmp($url,"http://search.twitter.com/search.json") == 0) break;
        $json_string = file_get_contents($url);
        $data = json_decode($json_string);
        $olddata = $data;
        $size = count($data->{"results"});
        for($i = 0; $i < $size;$i++){
            echo($data->{"results"}[$i]->{"text"}."<br/>");
            $_SESSION["dem"]++;
        } 
        }
        catch(Exception $e){

            break;
        }
    }

?>

0 个答案:

没有答案