【问题标题】:How can I get HTTP status code using OkHttp when there's no connectivity?没有连接时如何使用 OkHttp 获取 HTTP 状态代码?
【发布时间】:2016-11-06 04:46:42
【问题描述】:

我有以下方法:

Response httpResponse = client.newCall(request).execute(); 
httpResponse.code();

但在某些情况下(例如,当我断开电话网络、从中国访问 Google 或服务器损坏时),它会给我一个 IOException 而不是错误代码。

如何像 Volley 一样获取所有 HTTP 状态码?

【问题讨论】:

  • 在网络断开或服务器完全崩溃的情况下将没有 http-status-code,因为状态码是由服务器发送的。
  • 谢谢,我搞错了。

标签: http okhttp http-status-codes


【解决方案1】:

在这种情况下,您不会收到任何状态代码。阅读documentation

Response execute() throws IOException

立即调用请求,并阻塞直到可以处理响应或出现错误。 调用者可以使用响应的Response.body 方法读取响应正文。为避免资源泄漏,调用者必须关闭响应正文。

请注意,传输层成功(接收到 HTTP 响应代码、标头和正文)不一定表示应用层成功:响应仍可能表示不愉快的 HTTP 响应代码,例如 404500

投掷:

  • IOException:如果由于取消、连接问题或超时而无法执行请求。由于网络可能在交换期间发生故障,因此远程服务器可能在故障之前接受了请求。

  • IllegalStateException: 当调用已经执行时。

如果由于连接问题而无法执行请求,则需要IOException

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2017-09-12
    相关资源
    最近更新 更多