2016-04-15 131 views
0

我有一個android應用程序,我打了一個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

這是一個web服務,我打 –

+0

你檢查這個web服務是否還活着嗎? –

回答

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 
    }