1

Spring の RestTemplate を使用しているときに、HttpClient を使用して特定のパラメーターを設定する必要があります。

私は現在、次の方法でこれを行っています:

HttpClient httpClient = new HttpClient();
httpClient.getParams().setSoTimeout(prefs.getServerTimeout());
httpClient.getParams().setConnectionManagerTimeout(3000);
httpClient.getParams().setContentCharset("UTF-8");
httpClient.getParams().setCredentialCharset("ISO-8859-1", )
...
CommonsClientHttpRequestFactory requestFactory = new CommonsClientHttpRequestFactory(httpClient);
requestFactory.setReadTimeout(prefs.getServerTimeout());

RestTemplate restTemplate = new RestTemplate(requestFactory);

現在どこでも使用されている HttpClient。

HttpComponentsClientHttpRequestFactory.getHttpClient()

Android に同梱されている非推奨のものを指しています。

非推奨であり、6.0 で Android から削除されたため、RestTemplate で HttpClient オブジェクトを引き続き使用するにはどうすればよいですか?

それらは同じパッケージ (org.apache.http.client) を共有しているため、6.0 前後でこれを機能させる方法がわかりません。

(HttpClientを設定せずにhttpclient-androidとHttpComponentsClientHttpRequestFactoryを使用してみましたが、CloseableHttpClientを使用しているようです。ただし、前述のように、メソッドの署名は非推奨のHttpClientです。)

ポインタをいただければ幸いです。

4

2 に答える 2

0

springframework (org.springframework.http.client.SimpleClientHttpRequestFactory) から SimpleClientHttpRequestFactory を使用できると思います。

prepareConnection メソッドをオーバーライドして、タイムアウトやその他のパラメータを設定します。

public class MySimpleClientHttpRequestFactory  extends SimpleClientHttpRequestFactory {

   @Override
   protected void prepareConnection(HttpURLConnection connection, String httpMethod) throws IOException {
    super.prepareConnection(connection, httpMethod);
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(10000);
   }
}

次に、RestTemplate に設定します。

SimpleClientHttpRequestFactory factory = new MySimpleClientHttpRequestFactory();
RestTemplate template = new RestTemplate(factory)
于 2018-01-10T09:21:38.777 に答える