Zend Gdata日历错误请求错误

时间:2012-05-14 04:11:47

标签: php zend-framework cakephp-1.3 gdata gdata-api

我一直在尝试使用CakePHP中的ZEND GData API,让它设置并检索日历列表。

所有这些都有效,但是当我尝试检索日历事件时,我收到错误的请求错误,我不知道如何解决它。以下是运行脚本时收到的错误消息的代码。

* 注意:我正在使用XAMPP从我的机器测试

        //GET LIST OF EVENTS
        $index = 0;
        foreach($listFeed as $list) {
            $query = $service->newEventQuery($list->link[0]->href);
            // Set different query parameters
            $query->setUser('default');
            $query->setVisibility('private');
            $query->setProjection('full');
            $query->setOrderby('starttime');

            // Get the event list
            try {
                $eventFeed[$index] = $service->getCalendarEventFeed($query);
            } catch (Zend_Gdata_App_Exception $e) {
                echo "Error: " . $e->getResponse() . "<br />";
            }
            $index++;
        }

以下是错误消息:

  

错误:HTTP / 1.1 400错误请求内容类型:text / html; charset = UTF-8日期:Mon,14 May 2012 04:04:41 GMT Expires:Mon,14 May 2012 04:04:41 GMT Cache-control:private,max-age = 0 X-content-type-options: nosniff X-frame-options:SAMEORIGIN X-xss-protection:1; mode = block服务器:GSE连接:关闭无效的请求URI

感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:3)

  1. $service->newEventQuery()此处不需要参数。

  2. 我相信您正在从单个用户检索日历列表。让我们说这是你自己。所以

    $query->setUser('default');

    无法帮助您获取任何第二个日历,而只会使用主日历名称作为您的电子邮件地址。

    请参阅Google developer protocol guide

    要获取Feed,请使用您在本文档上一部分中找到的URL将以下HTTP请求发送到日历:

    GET https://www.google.com/calendar/feeds/userID/private-magicCookie/full

    因此,请将userID替换为您的calendarID,以获取特定日历的活动供稿。

  3. 尝试

        $index = 0;
        foreach($listFeed as $list) {
            $calendarID = $list->id->text;
            $user = str_replace("http://www.google.com/calendar/feeds/default/owncalendars/full/", '', $calendarID);
            $query = $service->newEventQuery();
            // Set different query parameters
            $query->setUser($user);
            $query->setVisibility('private');
            $query->setProjection('full');
            $query->setOrderby('starttime');
    
            // Get the event list
            try {
                $eventFeed[$index] = $service->getCalendarEventFeed($query);
            } catch (Zend_Gdata_App_Exception $e) {
                echo "Error: " . $e->getResponse() . "<br />";
            }
            $index++;
        }