添加Netty作为依赖项时,Spring TestRestTemplate POST和PUT不起作用

时间:2016-10-26 15:50:09

标签: java spring spring-boot netty

添加时

    compile 'io.netty:netty-all:4.1.6.Final'

作为我的Spring Boot项目的依赖项,使用TestRestTemplate.postForObject(...)TestRestTemplate.put(...)的所有单元测试都开始失败。似乎请求正文未被传输,因为我收到以下错误

Failed to read HTTP message:... HttpMessageNotReadableException: Required request body is missing

该服务仍在运行,并接受POST和PUT请求。我用curl检查了一下。另一方面,TestRestTemplate.getForObject(...)仍然有效。使用正常的RestTemplate进行POST和PUT也可以。

我尝试配置TestRestTemplate(正确的解决方案,错误的实现 - >查看我的回答

    @TestConfiguration     static class TestConfig {         @豆         RestTemplateBuilder restTemplateBuilder(){             RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder()             restTemplateBuilder.detectRequestFactory(假)             restTemplateBuilder.requestFactory(new SimpleClientHttpRequestFactory())             返回restTemplateBuilder         }     }

没有效果。我也尝试使用Netty4ClientHttpRequestFactory,这也不起作用。我尝试使用HttpMessageConverter配置GsonHttpMessageConverter,例如......无效。

1 个答案:

答案 0 :(得分:0)

$headers = 'From: blux@g.com' . "\r\n" . 'Reply-To: blux@g.com' . "\r\n" . 无法正常工作,因为Spring Boot会在类路径中找到Netty时将其配置为使用TestRestTemplateNetty4ClientHttpRequestFactory似乎不起作用。

参见https://github.com/spring-projects/spring-boot/issues/7240https://jira.spring.io/browse/SPR-14860

要制作Netty4ClientHttpRequestFactoryTestRestTemplate.postForObject(...),我必须提供TestRestTemplate.put(...) RestTemplateBuilder并将其配置为使用@Bean。问题中的SimpleClientHttpRequestFactory RestTemplateBuilder有一些错误。它应该看起来像这样

@Bean