我目前正在为使用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?
如果有人能指出我正确的方向,我们将不胜感激。
答案 0 :(得分:0)
您的服务器网址响应 300 代码,如以下屏幕截图(我使用Postman)
使用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,....
希望它有所帮助!