J'ai ce morceau de code qui fonctionne bien sur un projet qui utilise RestTemplateBuilder 1.5.14
this.restTemplate = restTemplateBuilder
.setConnectTimeout(connectTimeout)
.setReadTimeout(readTimeout)
.requestFactory(new MyHttpComponentFactoryBuilder()
.build())
.build();
Après la mise à jour vers RestTemplateBuilder 2.1.5
, J'ai ce morceau de code:
this.restTemplate = restTemplateBuilder
.setConnectTimeout(Duration.ofMillis(connectTimeout))
.setReadTimeout(Duration.ofMillis(readTimeout))
.requestFactory(new MyHttpComponentFactoryBuilder().build().getClass())
.build();
mais lors de l'exécution du code, j'ai un InvocationTargetException / NullPointerException
qui disparaît lors de la suppression de la ligne .requestFactory(new MyHttpComponentFactoryBuilder().build().getClass())
, mais le débogage new MyHttpComponentFactoryBuilder().build().getClass()
n'est pas nul
J'ai aussi essayé avec la solution proposée:
...
.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;
}
}
mais j'ai aussi un InvocationTargetException / NullPointerException
Essayez de supprimer .getClass()
call et si . RequestFactory call pointe vers requestFactory(Class<? extends ClientHttpRequestFactory> requestFactory)
méthode de la classe RestTemplateBuilder
alors plz partage l'extrait de code de votre MyHttpComponentFactoryBuilder
classe
Cela devrait fonctionner (avec lambda utilisé)
.requestFactory(() -> new MyHttpComponentFactoryBuilder().build())