Php 谷歌阅读器未读计数

Php 谷歌阅读器未读计数,php,api,google-reader,read-unread,Php,Api,Google Reader,Read Unread,我编写此函数是为了获取google reader项目的未读计数 function GetUnread($sid) { $url = "http://www.google.com/reader/api/0/unread-count?all=true&output=xml"; $msg = urldecode($msg); $msg = stripslashes($msg); $msg = urlencode($msg); $url = $url .

我编写此函数是为了获取google reader项目的未读计数

function GetUnread($sid)
{
    $url = "http://www.google.com/reader/api/0/unread-count?all=true&output=xml";
    $msg = urldecode($msg);
    $msg = stripslashes($msg);
    $msg = urlencode($msg);
    $url = $url . $msg;

    $purl = parse_url($url);
    $uri = $purl['scheme'] . "://" . $purl['host'] . $purl['path'] . "?" . $purl['query'];

    $cookie = "Name=SID;SID=" . $sid . ";Domain=.google.com;Path=/;Expires=16000000";

    $headers = array();
    array_push($headers, "GET " . $uri . " HTTP/1.0");
    array_push($headers, "Host: " . $purl['host']);
    array_push($headers, "Referer: " . $uri);
    array_push($headers, "Cookie: " . $cookie);
    array_push($headers, "");
    $headers = implode("\r\n", $headers);

    echo $headers;

    $conn = fsockopen($purl['host'], 80, $errno, $errstr, 30);
    if ($conn)
    {
        fputs($conn, $headers);
        $response = "";
        while (!feof($conn)) //Appears to loop indefinitely until feof's timeout(60)
        {
            $response .= fgets($conn, 128);
        }
        fclose($conn);
    }

    echo $response;
}
生成的标题如下所示:

GET http://www.google.com/reader/api/0/unread-count?all=true&output=xml HTTP/1.0
Host: www.google.com
Referer: http://www.google.com/reader/api/0/unread-count?all=true&output=xml
Cookie: Name=SID;SID=DQA...zA;Domain=.google.com;Path=/;Expires=16000000

它只是坐在那里,一旦完成加载,就没有响应字符串。这是标题还是fsockopen的问题?

首先尝试简化您试图获取的url,试试google.com。如果这返回一个响应,则可能存在某种身份验证问题。

我尝试了各种组合,最后使用了cUrl