Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Demon051
0 / 0 / 0
Регистрация: 29.02.2012
Сообщений: 28
#1

Ограничить время выполнения HTTP запроса - Android

22.03.2012, 15:32. Просмотров 1121. Ответов 4
Метки нет (Все метки)

Всем привет
Имеется код, работающий на отдельном сервисе

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BufferedReader rdr = null;
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse response = client.execute(request);
                                  
rdr = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
              
StringBuffer sb = new StringBuffer("");
String line = "";   
String NL  = System.getProperty("line.separator");
while ((line = rdr.readLine())!=null)
{
  sb.append(line + NL);
}
rdr.close();
              
String result = sb.toString();

При плохом канале связи этот код начинает тормозить. Соттветственно создаётся впечатление что приложение висит. Потом сам андроид начинает выдавать ругательные сообщения, что слишком долгий таймаут и не пошли бы вы все на...
Можно ли как-то стандартным способом и без гемороев всяких задать для HttpClient ограничение на время ожидания ответа, по истечению которого, он бы просто возвращал код ошибки и прекрашал насиловать сеть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 15:32     Ограничить время выполнения HTTP запроса
Посмотрите здесь:

Пример простого http- запроса Android
Пример выполнения (HTTP) запроса к веб-сервису и разбор ответа Android
Android Составление http запроса
Android Размер view по время выполнения
Android Время выполнения функции из C++ и из Java
Android Изменить имя ресурса во время выполнения программы
Закрыть диалог во время выполнения процесса (принудительное срабатывание dismiss() Android
Android Mp3 http
Basic4Android Как реализовать паузу во время выполнения программы
Два http get запроса в одном AsyncTask Android
Android Ограничить число подсказок AutoCompleteTextView
Https и http Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
22.03.2012, 23:18     Ограничить время выполнения HTTP запроса #2
Цитата Сообщение от Demon051 Посмотреть сообщение
Соттветственно создаётся впечатление что приложение висит.
Что бы подобного впечатления не создавалось, делайте всю работу с сетью в отдельном потоке. По завершению просто возвращаете ошибку или результат.
Demon051
0 / 0 / 0
Регистрация: 29.02.2012
Сообщений: 28
23.03.2012, 11:41  [ТС]     Ограничить время выполнения HTTP запроса #3
а запущенный сервис разве не работает в отдельном потоке?
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
23.03.2012, 17:47     Ограничить время выполнения HTTP запроса #4
Фактически он выполняется в UI потоке, но не "замораживает" работу приложения, поэтому использовать его для работы с сетью вполне приемлемо. Вы написали что "подвисает", я и посоветовал использовать потоки.
efirist
2 / 2 / 0
Регистрация: 23.03.2012
Сообщений: 20
24.03.2012, 00:05     Ограничить время выполнения HTTP запроса #5
для таких вещей в андроиде существует компонент - Service. чтоб не было проблем в нем советуется создаеть отдельный поток. потому что он должен будет быть связан (Binded) c Activity которая запустила его делает свои 'дела' но ждет результата от сервиса
Yandex
Объявления
24.03.2012, 00:05     Ограничить время выполнения HTTP запроса
Ответ Создать тему
Опции темы

Текущее время: 22:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru