ViV*_*ekH 8 android okhttp okhttp3
我在我的android客户端中实现了okhttp用于网络调用.
当我得到失败响应时,我得到失败代码和与代码相关的文本作为消息,但我没有得到服务器发送给我的自定义失败响应.在我实现的代码中的失败响应中,我得到的消息只是"错误请求".
我如何得到服务器给我回复的错误消息?
我的代码
private void executeCall(Request request, final ResponseListener listener) {
mOKHttpClient.newCall(request)
.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
postFailure(listener, (String) call.request()
.tag(),e.toString());
}
@Override
public void onResponse(Call call, final Response response) throws IOException {
if(response.isSuccessful()) {
String responseString = response.body().string();
postSuccess(listener, (String)call.request().tag(), responseString);
}
else {
postFailure(listener, (String)call.request().tag(),response.code()+","+response.message());
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
Roh*_*rya 11
您将必须捕获错误响应,body()因为response.message()返回HTTP状态消息.
在您提供的屏幕截图中:
状态是在细分OkHttp喜欢response.code()的HTTP状态代码是400在您的情况,并response.message()为这是HTTP状态信息Bad Request在你的案件.
响应的主体(无论成功还是失败)是response.body().如果你想把它作为一个String,那么打电话response.body().string().
@Override
public void onResponse(Call call, final Response response) throws IOException {
if(response.isSuccessful()) {
String responseString = response.body().string();
postSuccess(listener, (String)call.request().tag(), responseString);
}
else {
String errorBodyString = response.body().string();
postFailure(listener, (String)call.request().tag(),response.code()+","+errorBodyString);
}
}
Run Code Online (Sandbox Code Playgroud)
根据评论:
由于您想Message从响应中读取对象,请尝试这样做:
JSONObject = new JSONObject (response.body().string());
String messageString =object.getString("Message");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13816 次 |
| 最近记录: |