如果没有连接,如何使用OkHttp获取HTTP状态代码?

时间:2016-07-04 12:36:47

标签: http okhttp http-status-codes

我有以下方法:

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

但在某些情况下(例如,当我断开手机网络,从中国或服务器访问Google时,它会中断),它会为我提供IOException而不是错误代码。

如何获得像Volley一样的所有HTTP状态代码?

1 个答案:

答案 0 :(得分:0)

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

  

Response execute() throws IOException

     

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

     

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

     

<强>抛出:

     
      
  • IOException:如果由于取消,连接问题或超时而无法执行请求。由于网络在交换过程中可能会失败,因此远程服务器可能会在失败之前接受请求。

  •   
  • IllegalStateException:当呼叫已经执行时。

  •   

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