gpt4 book ai didi

java - Retrofit 2 - 获取错误对象 JSON(同一请求的几个 POJO)

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

我有一个简单的请求

  /*LOGIN*/
@FormUrlEncoded
@POST("v1/user/login") //your login function in your api
Call<LoginResponce> login(@Field("identity") String identity,
@Field("password") String password);

如果 http 代码为 200,则返回 LoginResponce 对象

{"token":"itwbwKay7iUIOgT-GqnYeS_IXdjJi","user_id":17}

或者 Error Json,如果出现问题,描述确切的错误

{"status":4,"description":"user provided token expired"}

如何处理响应中的错误状态?

我试过了,但在原始文本中看不到 JSON(不起作用)。而且似乎不是很好的解决方案。

mCallLoginResponse.enqueue(new Callback<LoginResponce>() {
@Override
public void onResponse(Response<LoginResponce> response, Retrofit retrofit) {
if (response.isSuccess()) {

registerWithToken(response.body().getToken());
} else { //some error in responce

Gson gson = new GsonBuilder().create();
ApiError mApiError = gson.fromJson(response.raw().body().toString(),
ApiError.class); //Exception here - no JSON in String
//todo error handling
}
}

最佳答案

要在有错误代码时访问响应正文,请使用 errorBody()而不是 body()。此外,ResponseBody 上有一个 string 方法,您应该使用它来代替 toString

Gson gson = new GsonBuilder().create();
try {
ApiError mApiError = gson.fromJson(response.errorBody().string(),ApiError.class);
} catch (IOException e) {
// handle failure to read error
}

关于java - Retrofit 2 - 获取错误对象 JSON(同一请求的几个 POJO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33151932/

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