【问题标题】:How to correct Zend_Uri_Exception (YouTube API with PHP Zend Gdata)如何更正 Zend_Uri_Exception (YouTube API with PHP Zend Gdata)
【发布时间】:2010-10-01 13:05:14
【问题描述】:

我正在使用 Zend Gdata 通过 PHP 脚本与 YouTube API 进行交互。实际上,我的工作正常,突然间我收到一个关于“Zend_Uri_Exception”的致命错误,消息“提供的 URI 无效”。如何更正异常?

代码:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_YouTube');

$yt = new Zend_Gdata_YouTube();
$query = $yt->newVideoQuery();
$query->setOrderBy($this->data['ItemVideo']['sort']);
$query->setRacy('include');
$query->setCategory($this->data['ItemVideo']['q']);

try {
  $videoFeed = $yt->getVideoFeed($query);
} catch(Exception $e) {
  echo var_dump($query) . '<p></p>' . $e;
}

输出:

object(Zend_Gdata_YouTube_VideoQuery)#79 (4) { ["_params:protected"]
=>  array(2) { ["orderby"]=>  string(9) "relevance" ["racy"]=>  string
(7) "include" } ["_defaultFeedUri:protected"]=>  NULL
["_url:protected"]=>  NULL ["_category:protected"]=>  string(14)
"charlie bit me" }

exception 'Zend_Uri_Exception' with message 'Invalid URI supplied' in /
web/php/balistik_list_app/app/vendors/ZendGdata/library/Zend/Uri/
Http.php:136 Stack trace: #0 /web/php/balistik_list_app/app/vendors/
ZendGdata/library/Zend/Uri.php(123): Zend_Uri_Http->__construct
('http', '//gdata.youtube...') #1 /web/php/balistik_list_app/app/
vendors/ZendGdata/library/Zend/Http/Client.php(257): Zend_Uri::factory
('http://gdata.yo...') #2 /web/php/balistik_list_app/app/vendors/
ZendGdata/library/Zend/Gdata/App.php(476): Zend_Http_Client->setUri
('http://gdata.yo...') #3 /web/php/balistik_list_app/app/vendors/
ZendGdata/library/Zend/Gdata.php(203): Zend_Gdata_App-
>performHttpRequest('GET', 'http://gdata.yo...', Array, NULL, NULL,

NULL) #4 /web/php/balistik_list_app/app/vendors/ZendGdata/library/Zend/
Gdata/App.php(610): Zend_Gdata->performHttpRequest('GET', 'http://
gdata.yo...') #5 /web/php/balistik_list_app/app/vendors/ZendGdata/
library/Zend/Gdata/App.php(541): Zend_Gdata_App->get('http://
gdata.yo...') #6 /web/php/balistik_list_app/app/vendors/ZendGdata/
library/Zend/Gdata/App.php(147): Zend_Gdata_App->importUrl('http://
gdata.yo...', 'Zend_Gdata_YouT...') #7 /web/php/balistik_list_app/app/
vendors/ZendGdata/library/Zend/Gdata.php(148): Zend_Gdata_App->getFeed
('http://gdata.yo...', 'Zend_Gdata_YouT...') #8 /web/php/
balistik_list_app/app/vendors/ZendGdata/library/Zend/Gdata/YouTube.php
(171): Zend_Gdata->getFeed('http://gdata.yo...', 'Zend_Gdata_YouT...')
#9 /web/php/balistik_list_app/app/controllers/
item_videos_controller.php(35): Zend_Gdata_YouTube->getVideoFeed(Object
(Zend_Gdata_YouTube_VideoQuery)) #10 /web/php/balistik_list_app/cake/
libs/object.php(114): ItemVideosController->search() #11 /web/php/
balistik_list_app/cake/dispatcher.php(259): Object->dispatchMethod
('search', Array) #12 /web/php/balistik_list_app/cake/dispatcher.php
(213): Dispatcher->_invoke(Object(ItemVideosController), Array) #13 /
web/php/balistik_list_app/app/webroot/index.php(90): Dispatcher-
>dispatch(NULL) #14 {main} 

【问题讨论】:

    标签: php zend-framework youtube-api gdata-api google-data-api


    【解决方案1】:

    我刚试穿 link text

    而且似乎 racy 在版本 2 中没有得到授权

    <errors xmlns='http://schemas.google.com/g/2005'>
    <error>
    <domain>GData</domain>
    <code>InvalidRequestUriException</code>
    <internalReason>Parameter racy not available in version 2</internalReason>  
    </error>
    </errors>
    

    请求

    GET /feeds/api/videos?q=Comedy%2Bdog&safeSearch=none&racy=include
    GData-Version: 2
    
    X-GData-Client: ytapi-google-jsdemo
    
    Content-Type: application/atom+xml
    
    Cache-Control: no-cache
    

    尝试删除 racy 控件或设置其他版本

    GET /feeds/api/videos?q=Comedy%2Bdog&search=none&racy=include
    

    这个正在工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-09
      相关资源
      最近更新 更多