如何使用Google API Java客户端对联系人进行部分更新?

时间:2011-01-14 09:08:12

标签: java android google-api-java-client

我正在使用轻量级Google API Java客户端来修改联系人。

有一些API样本显示了如何进行部分更新(即通过HTTP PATCH),但Google Contacts特别似乎不支持PATCH。文档还指定通过PUT完成的联系人更新需要包含有关联系人的完整信息,因为PUT请求中省略的任何现有数据都将从联系人中删除。

那么阅读联系人,修改数据并更新联系人最简单的步骤是什么?客户端API有一个很好的AtomParser,它从HTTP GET请求中获取响应并填充我的类中的成员,但除非我的类包含联系人可能拥有的所有可能字段,否则我可能无法读取所有数据和因此在HTTP PUT期间删除数据。

我唯一的猜测是,我必须跳过所有很酷的AtomParser巫​​术,只需使用一个普通的旧XML解析器来读取传入的feed,提取我需要的信息,然后对其进行HTTP PUT。但考虑到API客户端的所有功能,这看起来有点荒谬。还有更好的方法吗?

我暗地希望有相同的东西:

HttpRequest request = transport.buildPatchRequest();
request.setUrl(getEditLink());
AtomPatchRelativeToOriginalContent content =
    new AtomPatchRelativeToOriginalContent();

content.namespaceDictionary = Namespace.DICTIONARY;
content.originalEntry = originalEntry;
content.patchedEntry = modifiedEntry;
request.content = content;

return RedirectHandler.execute(request).parseAs(getClass());

1 个答案:

答案 0 :(得分:1)

这正是GenericXml的设计目的:它存储您未在应用程序中使用的任意XML,因此您可以安全地使用PUT方法。只需在数据模型类中扩展它。可以在sample for the Content API for Shopping中找到GenericXml的一个很好的例子。他们还有一个detailed guide of the XML model,包括对GenericXml的讨论。如果它不适合你,请告诉我。

完全披露:我是google-api-java-client项目的所有者。