java - Spring捕获所有响应类型

标签 java spring resttemplate

我目前正在构建一个 REST 客户端,它的代码与 Consuming a RESTful Web Service 中的代码几乎完全相同。指导。这个简单的示例在接收有效的 JSON 响应时效果非常好,但由于我也在开发 Web 服务,因此我希望能够捕获原始响应内容,以防响应不是有效的 JSON(无需发送两次请求)。

所以基本上指南可以归结为以下代码:

RestTemplate restTemplate = new RestTemplate();
Page page = restTemplate.getForObject("http://graph.facebook.com/gopivotal", Page.class);
System.out.println("Name:    " + page.getName());
System.out.println("About:   " + page.getAbout());
System.out.println("Phone:   " + page.getPhone());
System.out.println("Website: " + page.getWebsite());

并且是基于这个类的:

package hello;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Page {

    private String name;
    private String about;
    private String phone;
    private String website;

    public String getName() {
        return name;
    }

    public String getAbout() {
        return about;
    }

    public String getPhone() {
        return phone;
    }

    public String getWebsite() {
        return website;
    }

}

现在假设响应不是有效的 JSON(由于 Web 服务中的错误等),或者甚至响应类型不是 application/json,我如何将响应正文记录为纯文本? IE。当此行失败时,如何以纯文本形式访问响应正文:

Page page = restTemplate.getForObject("http://graph.facebook.com/gopivotal", Page.class);

PS:我遇到了this question - 从未得到答复 - 虽然我不确定,但我认为该代码的实际意图也符合我的问题。

最佳答案

您必须实现自定义 ResponseErrorHandler 并将其插入到您的 RestTemplate bean 中。

类似于:

public class LogResponseErrorHandler implements ResponseErrorHandler {
...
    @Override
    public void handleError(ClientHttpResponse response) throws IOException {
        logResponse(response.getBody());
    }
...
}

an article about the concrete usage of ResponseErrorHandler:

关于java - Spring捕获所有响应类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20224825/

相关文章:

java - SpringBoot BeanCreationException : Error creating bean with name 'requestMappingHandlerAdapter' Caused by: java. lang.NoSuchFieldError: defaultInstance

spring - 如何使用spring来编码和解码xml?

java - 没有响应类型的Spring Boot RestTemplate发布

java - 如何使用流利的Apache Components

java - android中的自定义复选框类

ajax - Spring MVC 重新加载部分页面

Android Annotations + RestTemplate - 获取响应 xml 作为字符串

java - 使用 RestTemplate 获取模型对象

java - 从串口读取

java双输入面板