0

我编写了这个函数来获取谷歌阅读器项目的未读计数。

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 有问题吗?

4

1 回答 1

0

首先尝试简化您要获取的网址(只需尝试 google.com)。如果返回响应,则可能存在某种身份验证问题。

于 2009-10-09T04:05:47.170 回答