0

私はAndroidアプリの座標から位置アドレスを取得しようとしています。前述のように、私は自分自身にAPIキーを取得し、ブラウザ上の標準URLでテストしました。これは正常な応答を返しました。私は私のAndroidアプリ上で同じURLをしようとしたときしかし、この -Googleの逆ジオコーディングURLリクエストは、Androidアプリで空(ゼロからレスゼルではありません)の応答を返します

{

は(ちょうど開く中括弧)私が得た応答です。ここで

は私のJavaコードです:

if (bestLocation != null) { 
         locationLatitude = bestLocation.getLatitude(); 
         locationLongitude = bestLocation.getLongitude(); 
         String latlng = locationLatitude + "," + locationLongitude; 
         final String location_type = "RANGE_INTERPOLATED"; 
         final String API_KEY = "MY_WORKING_KEY"; 
         final String url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" 
           + latlng + "&location_type=" + location_type + "&key=" + API_KEY; 
         new GetLocationAddress(CreateUser.this).execute(url); 
        } 

GetLocationAddress

private static class GetLocationAddress extends AsyncTask<String, Void, String> { 
     private WeakReference<CreateUser> reference; 

     GetLocationAddress(CreateUser context) { 
      reference = new WeakReference<>(context); 
     } 

     @Override 
     protected String doInBackground(String... strings) { 
      try { 
       HttpURLConnection connection = (HttpURLConnection) new URL(strings[0]).openConnection(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
       String result = reader.readLine(); 
       connection.disconnect(); 
       Log.i("JSON Response is ", result);     
       return result; 
      } catch (IOException e) { 
       e.printStackTrace(); 
       return null; 
      } 
     } 
    } 

URLのすべてのパラメータは、ブラウザ上で作業しています。私はAPIをAndroidのアプリに制限なく、制限付きで使用しようとしましたが、デバッグキーとリリースキーストアの両方に対してSHA-1フィンガープリントを設定しましたが、結果は同じです。助けてください。

更新:

私はAPIが私のアプリの指紋とAndroidアプリに制限されながらも、APIコンソールをチェックして、私のすべての要求が禁止さ(エラー403)として扱われていることを発見しました提供されます。デバッグとリリースの両方の指紋のパッケージ名は同じです。私のアプリが応答を受け取った後、ちょっとだけAPIリクエストカウントがコンソールで更新されることも観察されています。

+0

このAsyncTaskクラスを呼び出すために

private class GetLocationAddress extends AsyncTask<String, Void, String> { String server_response; private WeakReference<CreateUser> reference; GetLocationAddress(CreateUser context) { reference = new WeakReference<>(context); } @Override protected String doInBackground(String... strings) { URL url; HttpURLConnection urlConnection = null; try { url = new URL(strings[0]); urlConnection = (HttpURLConnection) url.openConnection(); int responseCode = urlConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { server_response = readStream(urlConnection.getInputStream()); Log.v("CatalogClient", server_response); } urlConnection.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.e("Response", "" + server_response); } } // Converting InputStream to String private String readStream(InputStream in) { BufferedReader reader = null; StringBuffer response = new StringBuffer(); try { reader = new BufferedReader(new InputStreamReader(in)); String line = ""; while ((line = reader.readLine()) != null) { response.append(line); } } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return response.toString(); } 

はあなたのlogcatを投稿してください。 – Dharmishtha

+0

結果ストリングをJSON構文解析しようとしない限り、エラーまたは例外はありません。これは明らかです。 – Nithin

+0

APIをリクエストできますか? – Dharmishtha

答えて

0

AsyncTaskをこのように使用します。

new GetLocationAddress(CreateUser.this).execute(url); 
+0

アップデートをご覧ください。私の要求は禁止されています。それが問題です。 – Nithin

+0

あなたのコンソールでチェックしてください。 API要求が2500に達すると、それは禁止されます。これを見てください。 https://stackoverflow.com/questions/18743128/recieving-a-403-forbidden-error-when-using-latitude-and-longitude-geocoding – Dharmishtha

+0

この時点までに約10件のリクエストがありました。使用限度ではありません。 – Nithin

関連する問題