Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring RestTemplate getForObject在对多个请求重用后包含重复的头_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring RestTemplate getForObject在对多个请求重用后包含重复的头

Java Spring RestTemplate getForObject在对多个请求重用后包含重复的头,java,spring,spring-boot,Java,Spring,Spring Boot,我用 在我的每一次使用中。我在应用程序类中将RestTemplate初始化为: @Autowired private RestTemplate restTemplate; 请告诉我这个问题的原因。如果我的操作出错,也请纠正我。尝试用@Component更改@Bean,并告诉我它是否有效。最后我找到了避免重复标题的解决方案: @Bean public RestTemplate restTemplate() { SimpleClientHttpRequestFactory httpReq

我用

在我的每一次使用中。我在应用程序类中将RestTemplate初始化为:

@Autowired
private RestTemplate restTemplate;

请告诉我这个问题的原因。如果我的操作出错,也请纠正我。

尝试用@Component更改@Bean,并告诉我它是否有效。

最后我找到了避免重复标题的解决方案:

@Bean
public RestTemplate restTemplate() {

    SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
    httpRequestFactory.setConnectTimeout(30 * 1000);
    httpRequestFactory.setReadTimeout(30 * 1000);

    return new RestTemplate(httpRequestFactory);
}

在我的例子中,原因是在AutowiredRestTemplate中为每个使用此bean的请求注册消息转换器,从而损坏整个应用程序的RestTemplatebean。
由于每个消息转换器都提供自己的“接受”功能,因此每个请求都会复制它(这个错误在spring 5.x中的某个地方被修复,现在只有唯一的接受值被发送到服务器)

显示一些日志。据我所知,
@Bean
创建了一个单例
@Bean
public RestTemplate restTemplate() {
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
    return restTemplate;
}