gpt4 book ai didi

android - okhttp 获取失败响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:19 25 4
gpt4 key购买 nike

我已经在我的 android 客户端中为网络调用实现了 okhttp。

当我收到失败响应时,我收到失败代码和与代码相关的文本作为消息,但我没有收到服务器发送给我的自定义失败响应。在我对已实现代码的失败响应中,我收到的消息只是“错误请求”。

而来自浏览器的相同响应如下。 enter image description here

我如何获得服务器返回给我的错误消息?

我的代码

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());
}
}
});
}

如果失败,这是我的回应。 enter image description here

最佳答案

您必须通过 body() 捕获错误响应,因为 response.message() 返回 HTTP 状态消息。

在您提供的屏幕截图中:

StatusOkHttp 中分解为 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);
}
}

根据评论:

由于您想从响应中读取 Message 对象,请尝试这样做:

JSONObject object = new JSONObject (response.body().string());
String messageString = object.getString("Message");

关于android - okhttp 获取失败响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com