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

改造2:如何处理动态响应

那鹏
2023-03-14
{
Title: "Suits",
Year: "2011–",
Rated: "TV-14",
Released: "23 Jun 2011",
Runtime: "44 min",
Genre: "Comedy, Drama",
Director: "N/A",
Writer: "Aaron Korsh",
Actors: "Gabriel Macht, Patrick J. Adams, Rick Hoffman, Meghan Markle",
Plot: "On the run from a drug deal gone bad, Mike Ross, a brilliant college-dropout, finds himself a job working with Harvey Specter, one of New York City's best lawyers.",
Language: "English",
Country: "USA",
Awards: "7 nominations.",
Poster: "http://ia.media-imdb.com/images/M/MV5BMTk1MjYzOTU2Nl5BMl5BanBnXkFtZTgwMzAxMTg5MTE@._V1_SX300.jpg",
Metascore: "N/A",
imdbRating: "8.7",
imdbVotes: "244,979",
imdbID: "tt1632701",
Type: "series",
totalSeasons: "6",
Response: "True"
}

当没有数据avilable时,它返回以下JSON:

http://www.omdbapi.com/?t=asdasdas

{
Response: "False",
Error: "Movie not found!"
}

共有1个答案

昌乐生
2023-03-14

你有几个选择。在我看来,最简单的方法是在原始pojo中包含error字段,并始终检查字段response。当这是“真的”时,所有其他字段都将出现。当“false”时,只有error字段。

另一种选择,也许是最不灵活和最不容易理解的选择,是在可以继承的地方设置pojo错误。您仍然必须检查response的值,以检查是否有错误。我个人会在这里避免这个选项,但我认为知道你仍然可以做到这一点是很好的。类似于这样:

class Error {
  @SerializedName("Error")
  @Expose
  private String error;
  // ...
}

class Movie extends Error {
  // other fields here
}

正如你所看到的,这是相当丑陋的,但工作...

Converter<ResponseBody, MyError> converter = new GsonConverterFactory()
   .responseBodyConverter(MyError.class, Annotation[0]);
MyError error = converter.convert(response.errorBody());

(这里myerror是包含错误字段的pojo的名称)。

您可能只想创建一次转换器工厂。最有可能的是您在创建referfit实例时使用的那个。

如果您实际使用rxjava,您可以在这里查看关于如何访问Rx响应中的错误正文的答案

 类似资料:
  • 我使用的是最新版本的改造,改造2,v2.0.0-beta3。API响应是User对象或空响应(空值)。如果我发送正确的用户名/密码,那么句柄将进入带有成功用户对象的响应方法。但是如果发送错误的密码,那么API将不返回任何内容,响应头中的值很少。但是我在onFailure(可抛出)中得到了MalformedJsonExc0019。 “com.google.gson.stream.MalformedJ

  • 最近我开始使用reverfit2,我遇到了一个解析空响应体的问题。我有一个服务器,它只响应http代码,没有任何内容在响应体。 我如何只处理关于服务器响应的元信息(报头、状态代码等)?

  • POJO: 在上面的代码POJO TrackerRefResponse.java前缀responseMessage被设置为responseMessage类型的string或object,所以我们可以用同名的ref变量(java basics:)创建POJO,所以我正在为Referfit中的dynamic寻找相同的解决方案。我知道这在带有异步任务的普通http客户端中非常容易,但这不是REST-AP

  • 全部的 我是骆驼的开胃菜。我有一些问题。这里有一个场景。 文件正文中有2个字段。(seq, date, OR no.)所以,我为这个数据格式生成了pojo类。 我申请了骆驼队。几天后,关于添加名称字段,dataformat发生了更改。 所以,我们需要修改pojo类并再次重建应用程序。但我们不想再次构建应用程序并为dataformat生成pojo类。 如果我们可以在运行时使用xsd动态生成Pojo类

  • 以下是GSON的例外: 改型实例是使用GsonConverterFactory创建的

  • 我使用改造2.7.1与静态编程语言协程。 我的改装服务定义如下: 此调用返回HTTP 204无内容响应,这会导致改装时崩溃: 如何使用协程处理改造中的204响应而不崩溃?