首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Androids包访问api.openrouteservice.org

如何通过Androids包访问api.openrouteservice.org
EN

Stack Overflow用户
提问于 2019-06-23 22:19:32
回答 1查看 145关注 0票数 1

我想从我的Android应用程序访问openrouteservice上的数据-特别是地球上两个给定坐标之间的距离。我已经发出了请求,并从另一个API获得了可行的响应,该API使用与此请求试图执行的相同样式的代码将两个给定的地址转换为它们的latlong坐标。它工作得很好,坐标到达,我可以进一步利用它们,没有问题。

我的问题是,我似乎访问API是错误的,因为如果我登录如下所示的URL,并将其从Debug窗口复制到我的浏览器中,它将发送请求,获得响应并在浏览器窗口中显示它。但是我的应用程序没有收到来自应用程序编程接口的响应,因为onResponse代码位从未执行过,"Fetch done“日志也从未出现在实际的调试日志中。下面是我的代码设置,它使用Volley来访问HTTP请求,并且适用于其他API。

代码语言:javascript
复制
    @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;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-23 22:49:28

如果您忘记将请求添加到请求队列中,请尝试如下操作:

代码语言:javascript
复制
// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);

JsonObjectRequest req = new JsonObjectRequest(/*params*/);

//add above request to queue
queue.add(req);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56724769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档