我有一个小型 java 应用程序,给定 google 地方的引用列表,必须取回每个所说的 google 地方的 ID(长话短说,我们存储地点的引用而不是他们的 ID,直到现在才意识到引用每个地方都不是唯一的)。
我的应用程序在列表中大约 95% 的位置上都能完美运行,但某些记录的状态码为“NOT_FOUND”而失败。一些调查显示,这些特定地点的地点参考(与https://maps.googleapis.com/maps/api/place/details/json?sensor=false&key=myApiKey前缀结合使用时)大约 2 个字符太长了一个网址。最后几个字符被截断。
我最初的想法是我只会向 google 地方 API 发出 POST 请求,但是当我将其作为 POST 请求发送到时,我会从 google 服务器返回“REQUEST_DENIED”状态代码。
无论如何,这是否存在,或者这只是谷歌地点 API 的一个紧急错误(现在地点的数量已经将参考推得太长了?)。
我还应该注意,失败的地方都是我们的应用程序最近添加的。
这是我当前(为 95% 工作)代码的样子:
public static JSONObject getPlaceInfo(String reference) throws Exception
{
URL places = new URL("https://maps.googleapis.com/maps/api/place/details/json?sensor=false&key="+apiKey+"&reference="+reference);
URLConnection con = places.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuffer input = new StringBuffer();
String inputLine;
while ((inputLine = in.readLine()) != null)
input.append(inputLine);
in.close();
JSONObject response = (JSONObject) JSONSerializer.toJSON(input.toString());
return response;
}
这就是我的“ACCESS_DENIED”邮政编码的样子:
public static JSONObject getPlaceInfo(String reference) throws Exception
{
String data = URLEncoder.encode("sensor", "UTF-8") + "=" + URLEncoder.encode("true", "UTF-8");
data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(apiKey, "UTF-8");
data += "&" + URLEncoder.encode("reference", "UTF-8") + "=" + URLEncoder.encode(reference, "UTF-8");
URL places = new URL("https://maps.googleapis.com/maps/api/place/details/json");
URLConnection con = places.openConnection();
con.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuffer input = new StringBuffer();
String inputLine;
while ((inputLine = in.readLine()) != null)
input.append(inputLine);
in.close();
JSONObject response = (JSONObject) JSONSerializer.toJSON(input.toString());
return response;
}
失败的参考示例如下:
CnRtAAAAxm0DftH1c5c6-krpWWZTT51uf0rDqCK4jikWV6eGfXlmKxrlsdrhFBOCgWOqChc1Au37inhf8HzjEbRdpMGghYy3dxGt17FEb8ys2CZCLHyC--7Vf1jn-Yn1kfZfzxznTJAbIEg6422q1kRbh0nl1hIQ71tmdOVvhdTfY_LOdbEoahoUnP0SAoOFNkk_KBIvTW30btEwkZs
提前致谢!