San*_*Rey 14 java spring resttemplate spring-boot spring-resttemplate
I have this piece of code working fine on a project that uses RestTemplateBuilder 1.5.14
this.restTemplate = restTemplateBuilder
.setConnectTimeout(connectTimeout)
.setReadTimeout(readTimeout)
.requestFactory(new MyHttpComponentFactoryBuilder()
.build())
.build();
Run Code Online (Sandbox Code Playgroud)
After updating to RestTemplateBuilder 2.1.5 I have this piece of code:
this.restTemplate = restTemplateBuilder
.setConnectTimeout(Duration.ofMillis(connectTimeout))
.setReadTimeout(Duration.ofMillis(readTimeout))
.requestFactory(new MyHttpComponentFactoryBuilder().build().getClass())
.build();
Run Code Online (Sandbox Code Playgroud)
but when running the code I have a InvocationTargetException / NullPointerException that dissapears when deleting the line .requestFactory(new MyHttpComponentFactoryBuilder().build().getClass()) , but debugging new MyHttpComponentFactoryBuilder().build().getClass() is not null
I also tried with the solution proposed:
...
.requestFactory(new MyRequestFactorySupplier())
...
class MyRequestFactorySupplier implements Supplier<ClientHttpRequestFactory> {
@Override
public ClientHttpRequestFactory get() {
// Using Apache HTTP client.
HttpClientBuilder clientBuilder = HttpClientBuilder.create();
HttpClient httpClient = clientBuilder.build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
requestFactory.setBufferRequestBody(false); // When sending large amounts of data via POST or PUT, it is recommended to change this property to false, so as not to run out of memory.
return requestFactory;
}
}
Run Code Online (Sandbox Code Playgroud)
but I have also a InvocationTargetException / NullPointerException
以下代码显示了如何为简单案例创建模板。
RestTemplate tmpl = new RestTemplateBuilder().setConnectTimeout(Duration.ofMillis(200))
.setReadTimeout(Duration.ofMillis(100))
.requestFactory(org.springframework.http.client.SimpleClientHttpRequestFactory.class)
.build();
Run Code Online (Sandbox Code Playgroud)
最好提供一下MyHttpComponentFactoryBuilder类的源码。但我的建议是创建一个MyHttpComponentFactory扩展类的类SimpleClientHttpRequestFactory,将您的代码从中迁移MyHttpComponentFactoryBuilder到它。
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |