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

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

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

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

22.03.2012, 15:32. Просмотров 1158. Ответов 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 ограничение на время ожидания ответа, по истечению которого, он бы просто возвращал код ошибки и прекрашал насиловать сеть?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 15:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ограничить время выполнения HTTP запроса (Программирование Android):

Пример выполнения (HTTP) запроса к веб-сервису и разбор ответа - Программирование Android
Здравствуйте! Просмотрев кучу форумов и прочитав много статей, не нашёл ответа на вопрос как создать приложение в Андроид которое...

Составление http запроса - Программирование Android
Нужен запрос в котором передаются логин и пароль, и затем выводятся данные уже авторизованного пользователя, например страница либо...

Пример простого http- запроса - Программирование Android
Добрый день! прошу посодействовать в решении данного вопроса: имеется устройство в локальной сети с IP 192.168.1.1, которое...

Два http get запроса в одном AsyncTask - Программирование Android
Добрый день, при вызове двух последовательных http get запросов происходит следующая ситуация: первый запрос выполняется полностью ...

Время выполнения функции из C++ и из Java - Программирование Android
Здравствуйте! Пытаюсь оценить время выполнения функции из C++ и из Java. Они устроен одинаково - просто считают сумму, только написаны...

Размер view по время выполнения - Программирование Android
Здрасте Создаю класс наследованный от view. В нем рисуют на canvas. Только перед рисованием мне нужно узнать размер view или canvas. Как...

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

Про необновляемость вьюх во время выполнения UI-поток - Программирование Android
TextView.setText(""+555); try{TimeUnit.SECONDS.sleep(10);} catch (InterruptedException e){e.printStackTrace();}; ...

Изменить имя ресурса во время выполнения программы - Программирование Android
Доброго времени суток. допустим есть вот такая вещь : rsc = R.drawable.name1; Bitmap bMap=...

Закрыть диалог во время выполнения процесса (принудительное срабатывание dismiss() - Программирование Android
Всем привет! В приложении есть диалоговое окно с кнопкой, по нажатию которой начинается выполнение процесса. Длительность процесса -...

Ограничить время выполнения команды - C Linux
Собственно сабж, как можно реализовать ограничение на время работы команды. Допустим, если если команда выполняется дольше 2с., то послать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.03.2012, 00:05
Ответ Создать тему
Опции темы

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