Я использую облегченный Java-клиент Google API для изменения контактов.
Существует несколько примеров API, показывающих, как выполнять частичные обновления (т. Е. Через HTTP PATCH), но, похоже, Контакты Google не поддерживают PATCH. В документах также указано, что обновления контактов, выполняемые через PUT, должны включать полную информацию о контакте, поскольку любые существующие данные, пропущенные в запросе PUT, будут удалены из контакта.
Итак, как проще всего прочитать контакт, изменить его данные и обновить его? Клиентский API имеет этот прекрасный AtomParser
, который принимает ответ от HTTP-запроса GET и заполняет членов в моем классе, но если мой класс не содержит все возможные поля, которые может иметь контакт, я мог бы не прочитать все данные и, как таковые, удалить данные во время HTTP PUT.
Мое единственное предположение, что мне придется пропустить все классное колдовство 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());