2016-04-19 9 views
2

私は現在、TFLs Unified APIを使用して、ロンドンのさまざまなアクセシビリティを持つユーザー向けにJourney Plannerアプリケーションを開発中です。TFL API:E/Volley:[73683] BasicNetwork.performRequest:予期しない応答コード300

toとfromパラメータの文字列ではなく、https://api.tfl.gov.uk/Journey/JourneyResults/1000266/to/1000013のようなicsCodesを使用するJSONObject /配列リクエストはこれまでのところJSONを取得できます。しかし、引数のために単語を使用しようとすると、タイトルに誤りが生じます。私の意図は、曖昧さ回避オプションのセットを返すことであり、ユーザは例えばウェストミンスター(ロンドン)、ウェストミンスターなどのリストから選択し、その場所に関する旅行を得るためにそのicsCodeを解析することができた。

TFLsのドキュメントでは、API要求が曖昧さ回避をサポートするオブジェクトまたは要求された移動結果を持つオブジェクトのいずれかを返すことを示しています。

以下は、曖昧さ回避の結果とどのように見えるかを示すリンクです。以下は

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: Unexpected response code 300 for https://api.tfl.gov.uk/Journey/JourneyResults/westminster/to/bank ?

誰に私を指すことができれば正しい方向性は非常に高く評価されます。

+0

これはサーバーが「HTTP.300」応答を返したことを意味します。https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection – thepoosh

答えて

0

お使いのサーバーのURL応答コードバレーボールとしたがって、次のスクリーンショット(私がPostmanを使用)

enter image description here

として、あなたは私のサンプルのようにonErrorResponse内のレスポンスボディを取得し、その後、parseNetworkErrorを使用することができます以下のコード

... 
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には、のようなJSONObject(応答本体)があります。 10

希望すると助かります!

+1

ありがとう、これは私が探していたものです!最初は私はLogcatメッセージで混乱しましたが、応答本体はAndroid Monitorウィンドウに表示できるものよりもはるかに長くなっていました。 – Storblor

関連する問題