android - 如何访问 Volley 中错误响应的内容?

标签 android android-volley

使用以下任何示例: http://developer.android.com/training/volley/request.html

我了解如何处理成功请求的响应,以及如何检测错误并使用react。

但是,错误可能是(在其他情况下)来自服务器的 40 倍或 50 倍响应,在这种情况下,响应仍然可以包含数据( header 和正文)。

但是错误监听器只传递了一个 VolleyError 对象(如果我没记错的话,它是 Exception 的子类)而不是一个 Response 对象。

如何访问错误响应的内容?

最佳答案

VolleyError 对象有一个networkResponse 引用,它本身有一个'data' 成员,它是响应体的字节数组。如果您想在响应出现错误代码的情况下查看数据,您可以使用如下内容:

@Override
public void onErrorResponse(VolleyError error) {
    String body;
    //get status code here
    String statusCode = String.valueOf(error.networkResponse.statusCode);
    //get response body and parse with appropriate encoding
    if(error.networkResponse.data!=null) {
        try {
            body = new String(error.networkResponse.data,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
    //do stuff with the body...
}

关于android - 如何访问 Volley 中错误响应的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26167631/

相关文章:

android - 更改状态代码 Rails

Android 模拟器 PlatformException(load_failed_ad,无法重新加载失败的广告,id=571273309,null)

Android RIL套接字和电话加密?

android - 如何使用带复数的字符串数组?

java - 如何使用 Spinner.setAdapter 在 Spinner 中显示字符串数组?

java - 处理android volley中的并发

android - 集成 skyscanner api 以获取实时价格

android - RecyclerView滚动监听的方法onscolled自动调用不滚动

php - 如何使用 android volley 导入 json 对象?

android - 在分析包含 retrolambda 的类时,Lint 崩溃并出现异常