2016-08-01 9 views
1

У меня есть необходимость использовать HttpClient для установки определенных параметров при использовании SpringTemplate Spring.HttpClient удален с Android 6.0, как его использовать с RestTemplate?

я в настоящее время сделать это с помощью:

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.

Поскольку он устарел и удален с Android в 6.0, как я могу продолжать использовать объект HttpClient с помощью RestTemplate?

Поскольку у них есть один и тот же пакет (org.apache.http.client), я не уверен, как сделать эту работу в pre/post 6.0.

(я попытался с помощью HttpClient-андроида и HttpComponentsClientHttpRequestFactory без установки HttpClient, и тогда кажется, использует CloseableHttpClient. Но метод подписи является устаревшим HttpClient как упомянуто.)

указатели были бы оценены.

ответ

0

Вы можете добавить его зависимость явно Gradle или добавить баночку, но попробовать, учитывая современные варианты, как залп 'com.android.volley:volley:1.0.0' или okHttp 'com.squareup.okhttp3:okhttp:3.4.1' или вы можете использовать Rest-шаблон для андроид 'org.springframework.android:spring-android-rest-template:2.0.0.M3'.

+0

Ну, я огляделся, но не нашел хорошего способа установить нужные мне параметры, самое главное указать кодировку для базовых учетных данных. HttpClient - единственное место, где я его нашел. – Mathias

+0

Как насчет этого в OKHttp '' 'Request.Builder reqBuilder = new Request.Builder(). AddHeader (« Accept-Charset »,« utf-8 »)' ''. У вас могут быть и другие кодировки. –

0

Я думаю, вы можете использовать SimpleClientHttpRequestFactory из springframework (org.springframework.http.client.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) 

 Смежные вопросы

  • Нет связанных вопросов^_^