2016-05-17 41 views

回答

1

当你安装一个新的凌空要求:你传递一个Response.ErrorListener

StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
     new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
     // act upon a valid response 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     // Handle error 
     } 
    }); 

通知。发生错误时(例如204),将使用VolleyError实例调用onErrorResponse(VolleyError)回调 - 错误和有关传递给它的错误的适当信息。

因此,在此回调中,您应该检查错误并采取适当的措施。

new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      if(error instanceof TimeoutError){ 
      // Take action when timeout happens 
      } 
     } 
    } 

注:当发生超时时,VolleyError实例实际上的TimeoutErrorVolleyError一个子类的实例。因此,我们检查错误引起的是使用instanceof

VolleyError子类的列表超时都可以在这里找到:http://afzaln.com/volley/com/android/volley/VolleyError.html

给出的例子是StringRequest类型,但是技术是其他VolleyObjectRequest类型相同。

+0

首先感谢您定义明确的答案。我现在正在处理这个问题,但我认为这个metodoly是错误的。因为如果真的发生时间连接,我会错过它。这个逻辑使得这个; 超时异常 - >无内容 无内容 - >无内容 – Arda

+0

哦,我现在明白了。 'Volley'误解了204'TimeoutError'。傻我!我完全误解了它。 – Karthiksrndrn

+0

可能重复。检查[this out](http://stackoverflow.com/questions/27392813/android-volley-library-not-working-with-204-and-empty-body-response) – Karthiksrndrn