YiF*_*eng 13 android okhttp okhttp3
当我使用这样的异步方式使用OkHttp库时:
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
}
});
Run Code Online (Sandbox Code Playgroud)
在onFailure方法中,我如何获得响应状态代码以区分不同的错误.例如,网络错误或服务器错误?
yen*_*rah 10
据我记得,onFailure当你没有得到回应时会被触发.因此,如果您收到错误,将调用onResponse.你可以这样做onResponse:
@Override
public void onResponse(Call call, Response response) throws IOException {
switch(response.code()){
//your desired catched codes here.
}
}
Run Code Online (Sandbox Code Playgroud)
而官方文档的onResponse方法:
请注意,传输层成功(接收HTTP响应代码,标头和正文)并不一定表示应用层成功:响应可能仍指示不满意的HTTP响应代码,如404或500.
https://github.com/square/okhttp/issues/1769
根据上面的链接,onFailure()当且仅当客户端出现问题时才会调用.
如果请求已成功传递但是存在服务器问题,则可以检查response.isSuccessful().如果返回false,请检查response.code()并处理错误.
| 归档时间: |
|
| 查看次数: |
9468 次 |
| 最近记录: |