安卓Volley:支持的状态码问题

3

我在我的Android应用程序中使用了一个基于REST的API,使用了Volley库(链接)。据我所知,在基于REST的API中,我们应该在特殊情况下实现状态码(链接),但是当我检查路径为volley\toolbox\BasicNetwork.java的Volley代码时,我发现Volley仅接受200到299之间的状态码。

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

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

你是什么意思?Volley实现了其他类型的代码,如300、400、500等等。 - acostela
我不这么认为,因为当我从服务器发送400状态码时,我会收到此异常BasicNetwork.performRequest:意外的响应代码400。 - Ali Hasanzade
我认为你必须使用VolleyError类。我会把它放在答案中。 - acostela
onError方法中的volleyError回调为空! - Ali Hasanzade
2个回答

0
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: 非预期的响应代码 400


0
如果服务器的STATUS_CODE在200-299之间,那么它被认为是成功状态,Volley将触发onResponse回调函数。
代码如下:
if (statusCode < 200 || statusCode > 299) {
    throw new IOException();
}

简单来说:当状态码不在200-299之间时,就会出现错误,Volley将触发onErrorResponse回调函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接