目前我的代码遇到问题,在过去3天内,我无法使用Google Places API成功完成删除请求,记录为here。
直到周日,只要请求的地方满足API中的条件,此代码就会执行并运行而不会出现问题,而我收到的唯一响应是OK或REQUEST_DENIED表单。
然而,现在,每当我发送请求时,我收到的唯一响应都是INVALID_REQUEST形式,这至少可以说是非常不方便的。根据我的理解,以及我之前对此代码执行的测试,我遵守他们要求的格式,所以我无法理解为什么这不起作用。
其他人可以查看此代码并告诉我与链接API相比是否存在任何问题?
public boolean delete(String reference)
{
try
{
System.out.println(reference);
String url = "https://maps.googleapis.com/maps/api/place/delete/xml?sensor=false&key=API_KEY_HERE";
String data = "<PlaceDeleteRequest>\n<reference>" + reference + "</reference>\n</PlaceDeleteRequest>";
System.out.println(data);
URL xmlUrl = new URL(url);
HttpPost request = new HttpPost(xmlUrl.toURI());
request.setEntity(new StringEntity(data));
HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
BufferedReader input = new BufferedReader(new InputStreamReader(entity.getContent()));
String line = "";
while ((line = input.readLine()) != null)
{
System.out.println(line);
if (line.contains("<status>"))
{
String[] s1 = line.split(">");
String[] s2 = s1[1].split("<");
if (s2[0].equalsIgnoreCase("ok"))
{
return true;
}
else
{
return false;
}
}
}
input.close();
}
catch(Exception e)
{
return false;
}
return false;
}
答案 0 :(得分:15)
个人而言,我收到了对我的Google API请求的INVALID_REQUEST响应,因为它们之间的间隔不够。我不得不在它们之间插入睡眠2秒钟才能使它们工作。
答案 1 :(得分:0)
我假设您已使用API密钥替换了API_KEY_HERE。尝试在developer console中获取新密钥,并确保您的“允许的IP地址”设置正确无误。
答案 2 :(得分:0)
尝试按照文档的建议刷新您的参考: https://developers.google.com/maps/documentation/places/
建议定期存储地方的参考资料 更新。
答案 3 :(得分:0)
这对我有用:
public String delete(String reference) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://maps.googleapis.com/maps/api/place/delete/xml?sensor=false&key=YOUR_KEY_HERE");
try {
StringEntity se = new StringEntity( "<PlaceDeleteRequest>\n<reference>" + reference + "</reference>\n</PlaceDeleteRequest>", HTTP.UTF_8);
se.setContentType("text/xml");
httppost.setEntity(se);
HttpResponse httpresponse = httpclient.execute(httppost);
HttpEntity resEntity = httpresponse.getEntity();
return(EntityUtils.toString(resEntity));
} catch (IOException e) {
return e.toString();
}
答案 4 :(得分:0)
发生在我身上的另一种情况是,我存储Google参考ID的我的数据类型是string
(限制为255个字符),将列数据类型更改为text
修复一切。 INVALID_REQUEST响应通常来自错误的引用调用。谷歌也可以扩展参考ID的长度,你不会知道它没有正确保存到数据库。
答案 5 :(得分:0)
我错误的是我使用的是Google的'id'属性,但事实证明还有'place_id',你必须使用place_id,而不是'id'。< / p>