当前位置: 首页 > 知识库问答 >
问题:

多次改装响应和API错误处理

刘胜泫
2023-03-14

我正在使用Retrofit和Gson从REST服务获取数据。它运行完美,但仅当API不返回错误时。通常,API返回对象列表(作为json),但当发生错误时,API返回单个错误对象。我正在尝试获取Call

我只有一个解决方案:检索单个字符串,然后在enqueue的onResponse()中尝试解析响应,但这里有很多样板代码。

这个问题有没有更好的解决办法?如何处理API错误?


共有1个答案

苍和裕
2023-03-14

您可以使用下一个构造:

@Override
public void onResponse(Call<YourModel> call, Response<YourModel> response) {
    if (response.isSuccessful()) {
       // Do awesome stuff
    } else if (response.code == 401) {
       // Handle unauthorized
    } else {
       // Handle other responses
    }
}

完整答案:如何获得改造成功响应状态代码

编辑

对于您的情况,您可以使用

    call.enqueue(new Callback<JsonElement>() {
        @Override
        public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
            if(response.isSuccessful()){
                JsonElement jsonElement = response.body();
                if(jsonElement.isJsonObject()){
                    JsonObject objectWhichYouNeed = jsonElement.getAsJsonObject();
                } 
                // or you can use jsonElement.getAsJsonArray() method
                //use any json deserializer to convert to your class.
            }
            else{
                System.out.println(response.message());
            }
        }
        @Override
        public void onFailure(Call<JsonElement> call, Throwable t) {
            System.out.println("Failed");
        }
    });
 类似资料:
  • 我正在使用改装连接到REST服务器,我需要处理成功响应和错误响应。我基于此示例构建我的客户机。 例如,在get token方法上,服务器成功响应具有以下结构: 故障响应是: 我的问题是,应用程序将错误响应视为成功。我的代码是: -rest api方法接口: -模型登录响应: -模型错误响应: -Rest回调: -客户端类别: 错误在哪里?

  • 这是我的服务器响应; 我的服务器响应在这里,它返回一些参数和一些常量的Json数组格式的值…

  • 我知道这个问题已经被问了很多,但我所看到的答案都没有帮助我澄清这个问题。我需要更多的指导方针,而不是一个具体的答案。 错误,没有这样的用户 到目前为止,我所尝试的是为列表中收到的每个对象创建一个类: 和Api,我认为这就是问题所在: 提前感谢!!

  • 我有一些控制器方法,比如 roundRobinBean返回某个主机的WebClient。如果我得到连接超时异常或得到500响应,我需要调用另一个主机或从缓存返回数据。mono有一些处理程序来改变内部数据吗?

  • 我试图在onFailure(ReformationError error)中获取错误响应正文,但获取的是null。 我正在使用标题“Accept:text/plain”(接受:text/plain)(接收请求)和“response”(响应),如果我设置日志级别,则可以将正文视为文本。完整。此外,<代码>错误。getResponse()。getStatus()为我提供正确的状态代码。 但是当我执行或

  • 创建一个 API 的时候处理错误是很痛苦的。为了避免手动的创建错误响应,你可以简单的抛出一个继承了 Symfony\Component\HttpKernel\Exception\HttpException 的异常,API 会自动的为你处理响应。 这里是 Symfony 内置的异常列表。 异常 状态码 Symfony\Component\HttpKernel\Exception\AccessDeni