автоматическая обработка ответов gzip http в Android - PullRequest
6 голосов
/ 21 августа 2011

Ссылка: http://hc.apache.org/httpcomponents-client-ga/tutorial/html/httpagent.html#d4e1261

На этой странице сказано, что следующий код настроит HttpClient для автоматической обработки ответов gzip (прозрачно для пользователя HttpClient):

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.addRequestInterceptor(new RequestAcceptEncoding());
httpclient.addResponseInterceptor(new ResponseContentEncoding());

Однако я не могу найти классы RequestAcceptEncoding и ResponseContentEncoding в Android SDK.Они просто отсутствуют - мне нужно написать это самому?

Ответы [ 2 ]

11 голосов
/ 21 августа 2011

Вот код, который я использую:

   mHttpClient.addResponseInterceptor(new HttpResponseInterceptor() {
       public void process(final HttpResponse response,
               final HttpContext context) throws HttpException,
               IOException {
           HttpEntity entity = response.getEntity();
           Header encheader = entity.getContentEncoding();
           if (encheader != null) {
               HeaderElement[] codecs = encheader.getElements();
               for (int i = 0; i < codecs.length; i++) {
                   if (codecs[i].getName().equalsIgnoreCase("gzip")) {
                       response.setEntity(new GzipDecompressingEntity(
                               entity));
                       return;
                   }
               }
           }
       }
   });

Вы также можете посмотреть SyncService.java из приложения ввода-вывода Google.

0 голосов
/ 08 ноября 2012

Android поставляется с довольно старой версией клиентской библиотеки Apache HTTP, в которой нет классов, которые вам не хватает.

Вы можете связать более новую версию клиентской библиотеки Apache HTTP с вашим приложением (см. этот ответ) или использовать AndroidHttpClient вместо этого, который был представлен на уровне API 8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...