Я пытался использовать API Google, в частности этот URL-адрес, чтобы получить штат и город США, и я продолжаю получать сообщение об ошибке 403 Forbidden HTTP. Мой код выглядит следующим образом:
private static boolean getAddressResult(String input, StringBuilder jsonResults) {
HttpURLConnection conn = null;
try {
String mapUrl;
StringBuilder sb = new StringBuilder(https://maps.googleapis.com/maps/api/geocode/json);
sb.append("?sensor=false&address=" + URLEncoder.encode(input, "utf8"));
mapUrl = sb.toString();
URL url = new URL(mapUrl);
Logger.d(TAG, ""+ url);
Logger.d(TAG, "trying to read");
conn = (HttpURLConnection) url.openConnection();
int status = conn.getResponseCode();
Logger.d(TAG, "status: "+ status);
InputStreamReader in = new InputStreamReader(conn.getInputStream());
// Load the results into a StringBuilder
int read;
char[] buff = new char[1024];
long currentTime = System.currentTimeMillis();
while ((read = in.read(buff)) != -1) {
Logger.d("NetworkUtil", "trying to parse");
long elapsedTime = System.currentTimeMillis();
if(elapsedTime-currentTime>=5000)
return false;
jsonResults.append(buff, 0, read);
}
} catch (MalformedURLException e) {
Logger.e(LOG_TAG, "Error processing Places API URL", e);
return true;
} catch (IOException e) {
Logger.e(LOG_TAG, "Error connecting to Places API", e);
return true;
} finally {
if (conn != null) {
conn.disconnect();
}
}
return false;
}
Я пробовал разные альтернативы, включая изменение URL-адреса с HTTP на HTTPS, я не уверен, что именно мне не хватает на данный момент, было несколько случаев, когда этот вызов веб-службы возвращался с успехом 200, но большую часть времени это просто терпит неудачу с кодом 403 HTTP ERROR, любой совет будет полезен на этом этапе, я также прикрепляю журнал от Logcat:
Error connecting to Places API
java.io.FileNotFoundException: https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=08080
at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:271)
at .getAddressResult(NetworkUtil.java:217)
at .access$000(NetworkUtil.java:30)
at $ResolveCityTask.doInBackground(NetworkUtil.java:81)
at $ResolveCityTask.doInBackground(NetworkUtil.java:42)