2016-04-15 33 views
0

私はWebサービスにヒットした結果を取得するアンドロイドアプリを持っています。 結果が長時間に渡って取得されたり、リクエストの間にインターネット接続が切断された場合、接続や接続がタイムアウトしたというメッセージやダイアログが表示されます。 このコードを試しましたが、これは動作しません すべてのヘルプは事前に接続タイムアウトAndroid

blic void getVolleyTask(Context context, 
     final IVolleyReponse responseContext, String URL) { 
    RequestQueue request = Volley.newRequestQueue(context); 
    StringRequest strReq = new StringRequest(Request.Method.GET, URL, 
      new Response.Listener<String>() { 

       @Override 
       public void onResponse(String response) { 
        try { 
         if (response != null) { 
          JSONArray _array = new JSONArray(response); 
          responseContext.ResponseOk(_array); 
         } else { 
          responseContext.ResponseOk(null); 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
         responseContext.ResponseOk(null); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        responseContext.ErrorBlock(); 
       } 
      }); 
    strReq.setRetryPolicy(new DefaultRetryPolicy(socketTimeout, maxTries, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
    request.add(strReq); 
} 


     public void getVolleyPostTask(Context context, 
     final IVolleyJSONReponse jsonResponseContext, String URL, 
     JSONObject obj) { 
    RequestQueue request = Volley.newRequestQueue(context); 
    JsonObjectRequest myRequest = new JsonObjectRequest(
      Request.Method.POST, URL, obj, 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        jsonResponseContext.ResponseOk(response); 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        jsonResponseContext.ErrorBlock(); 
       } 
      }) { 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      headers.put("Content-Type", "application/json; charset=utf-8"); 
      return headers; 
     } 
    }; 
    myRequest.setRetryPolicy(new DefaultRetryPolicy(socketTimeout, 
      maxTries, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
    request.add(myRequest); 
} 

おかげでいただければ幸いです!

+0

あなたが喫煙を送信しようとしているサイトが利用可能かどうかを確認しましたか? –

+0

これは私が打つウェブサービスです –

+0

このウェブサービスが生きているかどうかチェックしましたか? –

答えて

1

VollyJsonライブラリには、webservicesと通信中に異なるネットワークエラーを区別する機能があります.JSONObjectRequestで何か問題が発生した場合は、onErrorResponseが呼び出されます。エラーは次のように区別されます。

public void onErrorResponse(VolleyError error) { 

    if (error instanceof TimeoutError || error instanceof NoConnectionError)  { 
     //Write Your code here 
    } else if (error instanceof AuthFailureError) { 
     //TODO 
    } else if (error instanceof ServerError) { 
     //TODO 
    } else if (error instanceof NetworkError) { 
     //TODO 
    } else if (error instanceof ParseError) { 
     //TODO 
    } 
関連する問題