【问题标题】:Why does sometimes Volley's StringRequest give me an empty response?为什么有时 Volley 的 StringRequest 给我一个空响应?
【发布时间】:2015-07-19 13:59:14
【问题描述】:

我正在使用 Google 的网络库 Volley 来执行一组操作。特别是,我依靠StringRequest 来获取一些受保护页面的HTML。为了执行(经过身份验证的)请求,我总是在请求中添加一组 cookie。

问题是,没有任何明显原因,Volley有时给了我一个空的源代码! (这没有 204 状态码:它是纯 200)。

@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
    // HERE: response.data sometimes has size 0!
    // on the other hand, response.statusCode is 200.
    // [...]
}

我完全确定这不是远程服务器的问题(当我使用 Web 浏览器导航相同的页面、使用相同的 cookie 时,一切都很好)。我也有很多关于TimeoutError 的问题(不知道它是否相关)。

我真的很想改用临时编写的东西来一劳永逸地解决问题,但是 Volley 开箱即用的多线程功能仍然是制约我的一个重要因素。

【问题讨论】:

  • 您是否尝试过运行像 Charles 或 Fiddler2 这样的 HTTP 代理来确保获得正确的响应正文?

标签: android multithreading network-programming httpurlconnection android-volley


【解决方案1】:

关于 TimeoutError,您是否设置了重试策略?例如,与

        stringRequest.setRetryPolicy(new DefaultRetryPolicy(
            60000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多