1

大家好,我正在尝试使用 zend 框架更新我的谷歌联系人,但出现以下错误:

Expected response code 200, got 403 If-Match or If-None-Match header or entry etag attribute required

以下是我的代码:

Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Http_Client');
Zend_Loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_Feed');

$client = getGoogleClient('cp'); // this is a function I made - its working fine
$client->setHeaders('If-Match: *');

$gdata = new Zend_Gdata($client);
$gdata->setMajorProtocolVersion(3);
$query = new Zend_Gdata_Query($id);// id is the google reference 

$entry = $gdata->getEntry($query);
$xml = simplexml_load_string($entry->getXML());

$xml->name->fullName = trim($contact->first_name).' '.trim($contact->last_name);

$entryResult = $gdata->updateEntry($xml->saveXML(), $id);

这是怎么回事?

4

1 回答 1

1

我在http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14476692找到了解决方案

这是来自该链接的消息:

// 在清单 6 中... // 在 updateEntry 调用之前添加:$extra_header = array(); $extra_header='*';

// 然后将当前 updateEntry 调用替换为以下内容: $entryResult = $gdata->updateEntry($xml->saveXML(),$entry->getEditLink()->href,null,$extra_header);

对 Google 通讯录的更新现在可以使用。

我让它适用于我的代码。帖子中的代码也有问题。那是

$extra_header = array(); 

$extra_header = array('If-Match'=>'*'); 

$entryResult  = $contactObj->updateEntry($xml->saveXML(),$entry->getEditLink()->href,null,$extra_header);

我认为它也将帮助您解决更新问题。

谢谢

于 2011-03-16T07:22:07.183 回答