TFL API:E / Volley:[73683] BasicNetwork.performRequest:意外的响应代码300

时间:2016-04-19 12:10:00

标签: android android-volley

我目前正在为使用TFLs Unified API的旅程计划应用程序开发适用于伦敦具有不同可访问性的用户。

到目前为止,使用icsCodes的JSONObject /数组请求(例如https://api.tfl.gov.uk/Journey/JourneyResults/1000266/to/1000013)而不是for和from参数的字符串工作,我能够从中获取JSON。但任何使用单词作为参数的尝试都会导致标题中的错误。我的目的是返回一组消歧选项,并允许用户从列表中进行选择,例如威斯敏斯特(伦敦),威斯敏斯特,并解析其icsCode以获得与该位置相关的旅程。

TFLs文档声明API请求返回支持消歧的对象或具有请求的旅程结果的对象。

以下是使用Disambiguation.Result的请求的链接。

https://api.tfl.gov.uk/Journey/JourneyResults/westminster/to/bank

以下是我JsonRequest的代码,我收到了DisambiguationResults的错误:

private void sendJsonRequest() {
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, getRequestUrl(10), null,
new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        listJourneys=parseJSONResponse(response);
                        adapterResults.setJourneyList(listJourneys);
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                System.out.println(error);
            }
        });
        requestQueue.add(request);
    }

我收到此错误:

  

E / Volley:[73683] BasicNetwork.performRequest:https://api.tfl.gov.uk/Journey/JourneyResults/westminster/to/bank的意外回应代码300?

如果有人能指出我正确的方向,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

您的服务器网址响应 300 代码,如以下屏幕截图(我使用Postman

enter image description here

使用Volley,您可以使用parseNetworkError,然后在onErrorResponse中获取响应正文,如下面的示例代码所示

...
String url = "https://api.tfl.gov.uk/Journey/JourneyResults/westminster/to/bank/";
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest request = new JsonObjectRequest(url, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject response) {
        Log.i("onResponse", response.toString());
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.i("onErrorResponse", error.toString());
    }
}){
    @Override
    protected VolleyError parseNetworkError(VolleyError volleyError) {
        if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
            VolleyError error = new VolleyError(new String(volleyError.networkResponse.data));
            volleyError = error;
        }

        return volleyError;
    }
};
queue.add(request);
...

Logcat将拥有像I/onErrorResponse: com.android.volley.VolleyError: {"$type":"Tfl.Api.Presentation.Entities.JourneyPlanner.DisambiguationResult,....

这样的JSONObject(响应主体)

希望它有所帮助!