使用 Zend Gdata 从 Google Docs 中删除文档
Posted
技术标签:
【中文标题】使用 Zend Gdata 从 Google Docs 中删除文档【英文标题】:Delete document from Google Docs using Zend Gdata 【发布时间】:2011-04-20 16:27:47 【问题描述】:我在使用 Google Docs 和 Zend Framework 1.11.4 时遇到问题。
我正在尝试将文档上传到 Google 文档,检索 html 内容并删除文档。我正在处理 .doc、.pdf 和 .rtf 文件。
到目前为止我的代码:
$client = Zend_Gdata_ClientLogin::getHttpClient(
'my@googleDocsEmail.address',
'MyPassword',
Zend_Gdata_Docs::AUTH_SERVICE_NAME
);
$gdClient = new Zend_Gdata_Docs($client);
$newDocumentEntry = $gdClient->uploadFile(
$file,
null,
null,
Zend_Gdata_Docs::DOCUMENTS_LIST_FEED_URI
);
$cv = file_get_contents($newDocumentEntry->getContent()->getSrc());
$newDocumentEntry->delete();
在调用 ->delete() 方法之前一切正常,它返回异常预期响应代码 200,得到 409
我已经在谷歌上搜索了几天,但找不到答案,根据 Google 的文档,这是删除文档的正确方法。
如果有人对我做错了什么有任何想法,那么非常欢迎任何帮助。
提前非常感谢, 加里
【问题讨论】:
409 冲突 - 指定的版本号与资源的最新版本号不匹配。认为您必须“重新获取”文档(按 ID 搜索 ..) 谢谢 ArneRie,我会试试看的。 @ArneRie 对此仍然不满意,在我找到答案之前,我会求助于 B 计划。我已要求在ZendCasts 上进行有关此主题的屏幕投射 【参考方案1】:在使用 Zend_Gdata_Calendar 库时,我遇到了同样的 409 响应问题。 Zend 框架 bugtracker 上有一个未解决的错误。见http://zendframework.com/issues/browse/ZF-10194
这似乎归结为缺少由 Gdata_App 类或链中的子类之一设置的“If-Match”标头。
为了为日历 API 修复它,我重写了 Zend_Gdata_Calendar 类并实例化了我的类而不是那个类:
class Zend_Gdata_Calendar_Fixed extends \Zend_Gdata_Calendar
/**
* Overridden to fix an issue with the HTTP request/response for deleting.
* @link http://zendframework.com/issues/browse/ZF-10194
*/
public function prepareRequest($method,
$url = null,
$headers = array(),
$data = null,
$contentTypeOverride = null)
$request = parent::prepareRequest($method, $url, $headers, $data, $contentTypeOverride);
if($request['method'] == 'DELETE')
// Default to any
$request['headers']['If-Match'] = '*';
if($data instanceof \Zend_Gdata_App_MediaSource)
$rawData = $data->encode();
if(isset($rawData->etag) && $rawData->etag != '')
// Set specific match
$request['headers']['If-Match'] = $rawData->etag;
return $request;
然后使用它:
...
$gdata = new Zend_Gdata_Calendar_Fixed($httpClient);
...
我想你也可以做同样的事情,但是重写 Zend_Gdata_Docs 类。
【讨论】:
以上是关于使用 Zend Gdata 从 Google Docs 中删除文档的主要内容,如果未能解决你的问题,请参考以下文章
python 使用Google日历事件在网页上显示,使用gdata库
是否有适用于 Python 3.x 的 Google 数据 API (gdata)?
从 gdata.gauth.OAuthHmacToken python 对象中检索令牌和秘密
SyntaxError 使用 gdata-python-client 访问 Google Book Search Data API