2016-04-15 130 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 
    }