我的这段代码在使用RestTemplateBuilder 1.5.14
的项目中运行良好,>
this.restTemplate = restTemplateBuilder .setConnectTimeout(connectTimeout) .setReadTimeout(readTimeout) .requestFactory(new MyHttpComponentFactoryBuilder() .build()) .build();
更新为
RestTemplateBuilder 2.1.5
后,我有这段代码:
this.restTemplate = restTemplateBuilder .setConnectTimeout(Duration.ofMillis(connectTimeout)) .setReadTimeout(Duration.ofMillis(readTimeout)) .requestFactory(new MyHttpComponentFactoryBuilder().build().getClass()) .build();
但是在运行代码时,我有一个
InvocationTargetException / NullPointerException
在删除第.requestFactory(new MyHttpComponentFactoryBuilder().build().getClass())
行时消失,但是调试new MyHttpComponentFactoryBuilder().build().getClass()
不为空
我也尝试过提出的解决方案:
... .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; } }
但我也有一个
InvocationTargetException / NullPointerException
[我的这段代码在使用RestTemplateBuilder 1.5.14的项目上运行良好,this.restTemplate = restTemplateBuilder .setConnectTimeout(connectTimeout)....
尝试删除.getClass()
调用,如果。requestFactory调用
下面的代码显示了如何为简单的案例创建restTemplate。
这应该可以工作(使用lambda)
[从使用Spring-boot版本1.5.1的最小可行示例开始。