【问题标题】:Make RestTemplate process response body regardless of status无论状态如何,都使 RestTemplate 处理响应正文
【发布时间】:2013-12-29 08:39:57
【问题描述】:

我正在使用 Spring MVC,我正在尝试使用 Facebook API,只是为了好玩。 我目前遇到的问题是 Facebook 的 GRAPH Api 在遇到OAuthException 时会返回 200 以外的其他状态代码。但是,响应的主体仍然是一个有效的 json 对象,我想将其解析为我的对象。

这样,当状态码不是 HTTP.2xx 时,我的restTemplate 将调用错误处理程序,并且不解析对我的对象的响应。

有没有什么方法可以配置 RestTemplate 使其解析响应正文而不管 http 状态如何?

谢谢!

【问题讨论】:

    标签: java facebook spring facebook-graph-api resttemplate


    【解决方案1】:

    你可以设置一个客户ResponseErrorHandler

    restTemplate.setErrorHandler(customerErrorHandler)
    

    你只需要实现以下两个方法

    boolean hasError(ClientHttpResponse response) throws IOException;
    void handleError(ClientHttpResponse response) throws IOException;
    

    在你的情况下hasError可能总是返回false

    【讨论】:

    • 我已经尝试过这种方法,但是响应仍然有200以外的状态,使tomcat返回错误页面而不是对象。有什么办法可以修改errorhandler中的响应码?
    • Welp,这基本上是我自己的错误。它现在可以工作了,这在某种程度上是一种解决方案 :) 标记为已解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 2015-08-07
    • 2020-09-10
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多