如何使用Jersey Client将HTTP 400响应解析为Java类?

时间:2013-04-29 00:45:15

标签: java facebook facebook-graph-api jersey jersey-client

我正在使用Jersey客户端与Facebook Graph API进行交互。 Jersey客户端帮助我将JSON响应解析为Java类。

Facebook有时会发送400响应以及有关400响应原因的有用信息。例如:{"error":{"message":"Error validating application. Cannot get application info due to a system error.","type":"OAuthException","code":101}}

泽西岛只是抛出一个异常并且吃掉了响应中有用的部分: - (

如何让它将JSON解析为Java类,其中的字段对应于有用的错误信息?

2 个答案:

答案 0 :(得分:1)

您可以将ObjectMapper用于此目的。基本上,创建一个与JSON中的内容匹配的对象,并使用mapper的readValue()方法将JSON响应转换为对象。

答案 1 :(得分:1)

此代码有效:

try {
  User user = user_target
      .request()
      .get(User.class);
  System.out.println(user);
} catch (ClientErrorException primary_exception) {
  try {
    ErrorResponse error_response = primary_exception.getResponse().readEntity(ErrorResponse.class);
    System.out.println(error_response);
  } catch (ClientErrorException secondary_exception) {
    System.err.println("Secondary Exception: " + secondary_exception.getMessage());
    throw new ThisAppException("Secondary Exception", secondary_exception);
  }
}