【发布时间】:2014-06-27 21:48:46
【问题描述】:
我正在使用gdata Python 库来批量删除联系人,但我只收到“If-Match or If-None-Match header or entry etag attribute required”错误。
我认为问题开始于我必须在控制台中启用联系人 API(直到几天前还不需要?*)。
编辑:
实际上更新和删除操作都失败了。批量插入工作正常。
尝试指定 If-Match 标头,但仍然失败:
custom_headers = atom.client.CustomHeaders(**{'If-Match': '*'})
request_feed = gdata.contacts.data.ContactsFeed()
request_feed.AddDelete(entry=contact, batch_id_string='delete')
response_feed = self.gd_client.ExecuteBatch(
request_feed,
'https://www.google.com/m8/feeds/contacts/default/full/batch',
custom_headers=custom_headers
)
还在项目页面上创建了ticket,但我怀疑它会在那里引起任何关注。
编辑 2:
将Batch 方法与force=True 一起使用(它只是添加If-Match: * 标头)是相同的结果。
response_feed = self.gd_client.Batch(
request_feed,
uri='https://www.google.com/m8/feeds/contacts/default/full/batch',
force=True
)
* 有人可以验证吗?我以前从未在控制台中启用它,我的应用程序能够毫无问题地使用联系人 API,而且我相信它以前甚至不可用。我昨天看到它很惊讶。
【问题讨论】:
-
我也面临同样的问题,有关此问题的任何更新
-
在不了解 gdata 库的详细信息的情况下,您不应该以某种方式将 custom_headers 实例传递给请求吗?或者也许将它安装在
gd_client上?我怀疑它只会通过创建一个 CustomHeaders 实例来添加标题。 -
啊,不错,不错。那是一个错字。已编辑。
标签: python google-api google-contacts-api