连接超时Android

时间:2016-04-15 08:43:06

标签: android web connection connection-timeout httpconnection

我有一个Android应用程序,我在其中点击一个Web服务并获得结果。 现在我想要的是,如果结果变得很长,或者在请求互联网连接消失之间,那么我向用户显示消息或对话框您的连接超时 我试过这段代码,但这不行 任何帮助将不胜感激

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);
}

提前感谢!

1 个答案:

答案 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
    }