Контакты Google, eTags, Обновлены изменения при каждом доступе
Я пытаюсь использовать eTag от звонка, чтобы получить контакты Google. Поскольку на верхнем уровне есть eTag, я надеялся, что смогу проверить его, чтобы определить, изменилось ли что-либо в наборе данных контактов. Вот моя просьба:
URL запроса: https://www.google.com/m8/feeds/contacts/default/full/?max-results=0 Заголовки запроса: Авторизация: Глубина канала: 1 GData-Версия: 3.0 Тип содержимого: text/xml
Я думаю, что если я запрошу 0 результатов, у меня будет только та информация, которая мне нужна. Я могу сравнить eTag с тем, который я сохранил, и, если нет изменений, не было никаких изменений в любых контактах. XML я получаю обратно:
<?xml version="1.0" encoding="UTF-8"?>
<feed gd:etag=""QXYyfzVSLyt7I2A9XRRQFkwJRAA."" xmlns="http://www.w3.org/2005/Atom" xmlns:batch="http://schemas.google.com/gdata/batch" xmlns:gContact="http://schemas.google.com/contact/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">
<id><email address here></id>
<updated>2015-02-11T00:09:00.897Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
<title>Joe's Contacts</title>
<link rel="alternate" type="text/html" href="https://www.google.com/"/>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="https://www.google.com/m8/feeds/contacts/joe%40ihouseweb.com/full"/>
<link rel="http://schemas.google.com/g/2005#post" type="application/atom+xml" href="https://www.google.com/m8/feeds/contacts/joe%40ihouseweb.com/full"/>
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="https://www.google.com/m8/feeds/contacts/joe%40ihouseweb.com/full/batch"/>
<link rel="self" type="application/atom+xml" href="https://www.google.com/m8/feeds/contacts/joe%40ihouseweb.com/full?max-results=0"/>
<link rel="next" type="application/atom+xml" href="https://www.google.com/m8/feeds/contacts/joe%40ihouseweb.com/full?max-results=0&start-index=1"/>
<author>
<name>Joe</name>
<email>joe@ihouseweb.com</email>
</author>
<generator version="1.0" uri="http://www.google.com/m8/feeds">Contacts</generator>
<openSearch:totalResults>42</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>0</openSearch:itemsPerPage>
</feed>
Все выглядит хорошо... за исключением того, что каждый раз, когда я звоню, обновленная дата и eTag возвращаются по-разному. Я могу сделать 10 звонков подряд, и каждый раз eTag отличается. Разве это не правильный способ использования API? Если eTag каждый раз возвращается по-другому, то я не могу использовать его, чтобы определить, что-то изменилось. Разве не для этого предназначен eTag?
Энди
Вот пример - я делаю запрос выше 10 раз с интервалом в 5 секунд. Это мой личный аккаунт, поэтому я уверен, что никто не меняет никаких ценностей на меня. Обратите внимание, что значения eTag и "обновленные" отличаются каждый раз. Первый столбец - время, когда я сделал запрос (PST), второй и третий - результирующие eTag и обновленные значения.
16:38:30: "SHYyfTVSLyt7I2A9XRRQGEoORAQ.": 2015-02-14T00: 38: 29.895Z
16:38:36: "RHY-fjVSLyt7I2A9XRRQGEoORAU".: 2015-02-14T00: 38: 35.856Z
16:38:42: "QHk9ezVSLyt7I2A9XRRQGEoORAY.": 2015-02-14T00: 38: 41.763Z
16:38:47: "Rns6cTVSLyt7I2A9XRRQGEoORAY".: 2015-02-14T00: 38: 47.519Z
16:38:53: "Qnw-fzVSLyt7I2A9XRRQGEoORAc.": 2015-02-14T00: 38: 53.257Z
16:38:59: "SXc5ezVSLyt7I2A9XRRQGEoORAc.": 2015-02-14T00: 38: 58.923Z
16:39:05: "RXg5ezVSLyt7I2A9XRRQGEoORAA.": 2015-02-14T00: 39: 04.623Z
16:39:10: "QX06cTVSLyt7I2A9XRRQGEoORAE".: 2015-02-14T00: 39: 10.319Z
16:39:16: "R346eDVSLyt7I2A9XRRQGEoORAE".: 2015-02-14T00: 39: 16.010Z
16:39:22: "QHgyfjVSLyt7I2A9XRRQGEoORAI.": 2015-02-14T00: 39: 21.696Z