2

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

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

那么读取联系人、修改其数据并更新它的最简单的程序是什么?客户端 API 很好AtomParser地从 HTTP GET 请求中获取响应并填充我的类中的成员,但除非我的类包含联系人可能拥有的所有可能字段,否则我可能不会读取所有数据并因此在期间删除数据HTTP 放置。

我唯一的猜测是,我将不得不跳过所有酷炫的 AtomParser 巫术,只使用一个普通的旧 XML 解析器来读取传入的提要,提取我需要的信息,然后对其执行 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());
4

1 回答 1

1

这正是GenericXml的设计目的:它存储您未在应用程序中使用的任意 XML,因此您可以安全地使用 PUT 方法。只需在您的数据模型类中扩展它。可以在Content API for Shopping 的示例中找到一个很好的 GenericXml 示例。他们还提供了 XML 模型的详细指南,包括对 GenericXml 的讨论。让我知道它是否不适合你。

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

于 2011-01-14T15:41:22.607 回答