Я реализую приложение Contact, используя Google Contact API
. Теперь я пытаюсь обновить контакт, отправив запрос на размещение в следующем формате
PUT /m8/feeds/contacts/default/full/{contactId}
If-Match: {lastKnownEtag}
GData-Version: 3.0
Content-Type: application/atom+xml
И у меня есть XML в виде строки, которую я собираюсь отправить в качестве тела запроса. Это моя xmlString (Тело запроса)
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="*">
<id>http://www.google.com/m8/feeds/contacts/default/base/1785xxxx</id>
<catagory scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
<gd:name>
<gd:fullname>abc</gd:fullname></gd:name>
<gd:email address="[email protected]" displayName="abc" primary="true" rel="http://schemas.google.com/g/2005#work"/>
<content type="text">Notes</content>
<gd:phoneNumber primary="true" rel="http://schemas.google.com/g/2005#other">9090xxxxxx</gd:phoneNumber>
</entry>
Я написал приведенный ниже код для отправки запроса PUT на обновление контакта.
String getUrl = "https://www.google.com/m8/feeds/contacts/default/full/"+contactID+"?oauth_token=" + accessToken;
URL url = new URL(getUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setRequestMethod("PUT");
con.setRequestProperty("Content-Type", "application/atom+xml" );
con.setRequestProperty("GData-Version","3.0");
con.setRequestProperty("IF-MATCH", "*");
OutputStreamWriter output = new OutputStreamWriter(con.getOutputStream());
output.write(xmlString);
// xmlString is the body of the request
output.flush();
output.close();
System.out.println(con.getResponseCode());
Когда я попытался отправить запрос в OAuth 2.0 Playground
, контакт успешно обновился. Но когда я пытаюсь запустить указанную выше программу, я получаю
400 Ошибка неверного запроса
Я не знаю, где я ошибаюсь. Любая помощь будет оценена по достоинству!
If-Match
, а неIF-MATCH
. - person David Conrad   schedule 21.06.2018