Я хочу получить доступ к данным API openrouteservice - в частности, расстояние между двумя заданными координатами на земном шаре - из моего приложения для Android.Я сделал запросы и получил жизнеспособные ответы от другого API, который преобразует два заданных адреса в их широтные координаты, используя тот же стиль кода, который пытается выполнить этот запрос.Он работает нормально, координаты получены, и я могу использовать их в дальнейшем без проблем.
Моя проблема в том, что мне кажется, что я неправильно обращаюсь к API, потому что, если я регистрирую URL, как показано ниже, и копирую его из окна отладкив мой браузер отправляет запрос, получает ответ и показывает его в окне браузера.Но мое приложение не получает ответ от API, так как бит кода onResponse никогда не выполняется, и журнал «Fetch done» никогда не появляется в реальном журнале отладки.Ниже приведены мои настройки кода, который использует Volley для доступа к HTTP-запросам и который отлично работает для других API.
@Override
protected String doInBackground(String... strings) {
Log.d("Run =>","Query 3");
String targetKoordURL = null;
String startKoordURL = null;
try {
startKoordURL = startK.getString("lon").concat(",").concat(startK.getString("lat"));
targetKoordURL = targetK.getString("lon").concat(",").concat(targetK.getString("lat"));
} catch (JSONException e) {
e.printStackTrace();
}
String URLfin = "https://api.openrouteservice.org/v2/directions/driving-car?api_key=5b3ce3597851110001cf624823e587e7a80c4c6ab02af6d394585213&start="+startKoordURL+"&end="+targetKoordURL;
Log.d("Debug =>", URLfin);
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, URLfin, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
store = response;
Log.d("Run =>", "Fetch done!");
continueImp();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error instanceof TimeoutError || error instanceof NoConnectionError){
sideFetcherHTTPRequestStart replace = new sideFetcherHTTPRequestStart();
replace.execute();
Log.d("VOLLEY_ERROR", "Retrying on Kilometer request");
}
error.printStackTrace();
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Accept", "application/json,application/geo+json,application/gpx+xml,img/png; charset=utf-8");
return params;
}
};
return null;
}