Spring BootでRestTemplateのClientHttpRequestFactory実装クラスをHttpComponentsClientHttpRequestFactoryに変更する

Spring BootでRestTemplateのClientHttpRequestFactory実装クラスをHttpComponentsClientHttpRequestFactoryに変更する

RestTemplateのClientHttpRequestFactoryの実装クラスはデフォルトはorg.springframework.http.client.
SimpleClientHttpRequestFactory
です。

`org.springframework.http.client. HttpComponentsClientHttpRequestFactory`に変更する

org.springframework.http.client.HttpComponentsClientHttpRequestFactoryに変更するには、build.gradeに以下追記します。

build.gradle

compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.12'
Just a moment...

Spring2.1.9.RELEASEだとクラスパスにあるhttpclientを以下の優先順位で自動設定してくれるようです。

1.Apache HttpClinet
2.OkHttp3
3.JavaSE

明示的に設定する場合、RestTemplateBuilder#build()メソッドでRestTemplateクラスのインスタンスを生成します。requestFactoryメソッドで以下を指定します。

Javaソース

RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
HttpComponentsClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory();
RestTemplate restTemplate = restTemplateBuilder.requestFactory(() -> requestFactory).build();

これでrestTemplateのrequestFactoryをHttpComponentsClientHttpRequestFactoryに変更することができます。

Spring BootでRestTemplateのClientHttpRequestFactory実装クラスをHttpComponentsClientHttpRequestFactoryに変更する

Spring Boot 1.4+でRestTemplate(HTTPクライアント)を使う

Invalid HTTP method: PATCH

Spring Boot3.0以降、PATCHメソッドを使用すると「Invalid HTTP method: PATCH」エラーが出ます。

build.gradleのdependenciesにhttpclient5系を追加します。

org.apache.httpcomponents.client5:httpclient5

参考サイト

Spring Boot 3.0 Migration Guide
Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.
Upgrading from Spring Boot 2.7 to 3.0 doesn't flag httpcomponents changes · Issue #33515 · spring-projects/spring-boot
When migrating a project that uses httpclient 4 any TestRestTemplate that uses detection will drop back to the simple im...
spring-boot 3 restTemplate patchForObject fails with Invalid HTTP method: PATCH · Issue #33863 · spring-projects/spring-boot
Bug report I've upgraded spring-boot 2 to spring-boot 3. I'm requesting an external API, but the request fails. I've tes...

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました