Я звоню в API обратного геокодирования Google, предоставляя широту, долготу и ключ API Google (у этого ключа еще нет ограничений для консоли), код ответа, который я получаю, равен 200, но иногда я получаю нулевые данные, вотподробное описание проблемы:
- Если я работаю в режиме отладки (отладочная истина в граде), размер списка ответов равен 10 с данными;следовательно, я могу получить значение place_id
- Если я работаю в режиме выпуска (отладка false), размер списка ответов по-прежнему равен 10, но все данные равны нулю, это означает значение place_idимеет значение null, также formatted_address имеет значение null.
Вызов API:
public static void callGeocodeAPI() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://maps.googleapis.com/maps/api/")
.addConverterFactory(GsonConverterFactory.create(getGsonInstance()))
.build();
APIservice requestInterface = retrofit.create(APIservice.class);
Call<GeocodeResponse> call = requestInterface.getReverseGeocode(latitude + "," + longitude, GOOGLE_PLACE_API_KEY);
APIHelper.enqueueWithRetry(call, new Callback<GeocodeResponse>() {
@Override
public void onResponse(Call<GeocodeResponse> call, Response<GeocodeResponse> response) {
if (response != null && response.isSuccessful()) {
GeocodeResponse jsonResponse = response.body();
if (jsonResponse != null) {
ArrayList<GeocodeResult> geocodeResponses = jsonResponse.getGeocode_results_list();
if (jsonResponse.getGeocode_results_list().size() > 0) {
Log.d(TAG, "place_id: " + geocodeResponses.get(0).getPlace_id());
Log.d(TAG, "formatted_address: " + geocodeResponses.get(0).getFormatted_address());
}
}
} else {
}
}
@Override
public void onFailure(Call<GeocodeResponse> call, Throwable t) {
Log.d(TAG, "Failure");
}
});
call.clone();
}
В классе интерфейса:
@GET("geocode/json")
Call<GeocodeResponse> getReverseGeocode(@Query("latlng") String latlng,
@Query("key") String API_KEY);
Контейнер ответа REST:
public class GeocodeResponse {
@SerializedName("results")
@Expose
private ArrayList<GeocodeResult> geocode_results_list;
public ArrayList<GeocodeResult> getGeocode_results_list() {
return geocode_results_list;
}
public void setGeocode_results_list(ArrayList<GeocodeResult> geocode_results_list) {
this.geocode_results_list = geocode_results_list;
}
}
Класс GeocodeResult:
public class GeocodeResult {
private ArrayList<GeocodeAddress> address_components;
private String formatted_address;
private GeocodeGeometry geometry;
private String place_id;
private ArrayList<String> types;
...
}
Примечание. Я отправляю менее 300 запросов в день.
Знаете ли вы, что я что-то упустил?