我无法使用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
我已经谷歌搜索了几天,但是找不到答案,根据Googles文档,这是删除文档的正确方法。
如果有人知道我做错了什么,那么任何帮助都会非常受欢迎。
非常感谢, 加里
答案 0 :(得分:0)
使用Zend_Gdata_Calendar库时,我遇到了同样的409响应问题。 Zend框架bugtracker上存在一个漏洞。见http://zendframework.com/issues/browse/ZF-10194
似乎归结为缺少由Gdata_App类或链中的一个子类设置的“If-Match”标头。
要为Calendar 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类。