【问题标题】:Android Volley : Supported status codes issueAndroid Volley:支持的状态码问题
【发布时间】:2016-03-10 10:27:15
【问题描述】:

我在我的android应用程序中使用了一个带有volley库的restful API,正如我所知,在restful API中我们应该在特殊情况下实现STATUS CODES,但是当我检查这条路径中的截击代码时:volley\toolbox\BasicNetwork.java我see volley 只接受 200 到 299 之间的状态码。

if (statusCode < 200 || statusCode > 299) {
    throw new IOException();
}

为什么? 这是否意味着 volley 不支持 RESTFUL 架构?

【问题讨论】:

  • 什么意思? Volley 实现了其他类型的代码,如 300、400、500 等。
  • 我不这么认为,因为当我从服务器发送 400 状态代码时,我收到此异常 BasicNetwork.performRequest: Unexpected response code 400
  • 我认为你必须使用 VolleyError 类。我会给它一个答案
  • onError 方法中的volleyError 回调为空!

标签: java android rest android-volley


【解决方案1】:

VolleyError 有一个 NetworkResponse 类型的公共变量。您可以访问 error.networkResponse.statusCode 来实现您的 http 错误代码。

public void onErrorResponse(VolleyError error) {

NetworkResponse response = error.networkResponse;
if (error instanceof ServerError && response != null) {
    try {    
        // Deserialize data using what you want
        JSONObject obj = new JSONObject(res);
    } catch (UnsupportedEncodingException e1) {
        e1.printStackTrace();
    } catch (JSONException e2) {
        e2.printStackTrace();
    }
}
}

您可以在此处阅读有关此内容的更多信息。 Android Volley - BasicNetwork.performRequest: Unexpected response code 400

【讨论】:

    【解决方案2】:

    如果服务器 STATUS_CODE 介于 200 - 299 之间,则表示相当成功,Volley 将触发 onResponse 回调。

    代码:

    if (statusCode < 200 || statusCode > 299) {
        throw new IOException();
    }
    

    仅仅意味着:当状态码 不在 200 - 299 之间 因此这是一个错误,Volley 将触发 onErrorResponse 回调。

    【讨论】:

      猜你喜欢
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      相关资源
      最近更新 更多