PUT 请求给出 400 Bad Request Error
PUT request giving 400 Bad Request Error
我正在使用 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="abc@gmail.com" 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 Bad Request Error
我不知道我哪里错了。任何帮助将不胜感激!
终于找到我哪里出错了。
我的 xmlString 无效。 <entry>
标记需要 https://developers.google.com/contacts/v3 中未提及的另一个命名空间 xmlns="http://www.w3.org/2005/Atom"
(Google 联系 API)。
这就是我收到 400 Bad request 错误的原因。
有效的 xmlString
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="*" xmlns="http://www.w3.org/2005/Atom">
<id>http://www.google.com/m8/feeds/contacts/default/base/1785xxxx </id>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact" />
<gd:name>
<gd:fullName>name</gd:fullName>
</gd:name>
<gd:email address="juli@gmail.com" displayName="juli" 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>
我正在使用 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="abc@gmail.com" 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 Bad Request Error
我不知道我哪里错了。任何帮助将不胜感激!
终于找到我哪里出错了。
我的 xmlString 无效。 <entry>
标记需要 https://developers.google.com/contacts/v3 中未提及的另一个命名空间 xmlns="http://www.w3.org/2005/Atom"
(Google 联系 API)。
这就是我收到 400 Bad request 错误的原因。
有效的 xmlString
<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns:gd="http://schemas.google.com/g/2005" gd:etag="*" xmlns="http://www.w3.org/2005/Atom">
<id>http://www.google.com/m8/feeds/contacts/default/base/1785xxxx </id>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact" />
<gd:name>
<gd:fullName>name</gd:fullName>
</gd:name>
<gd:email address="juli@gmail.com" displayName="juli" 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>