Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Demon051
0 / 0 / 0
Регистрация: 29.02.2012
Сообщений: 28
#1

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

22.03.2012, 15:32. Просмотров 1264. Ответов 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) запроса к веб-сервису и разбор ответа
Здравствуйте! Просмотрев кучу форумов и прочитав много статей, не нашёл...

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

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

Два http get запроса в одном AsyncTask
Добрый день, при вызове двух последовательных http get запросов происходит...

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

4
NiRamz
211 / 211 / 33
Регистрация: 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 / 33
Регистрация: 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
24.03.2012, 00:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 00:05

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

Изменить имя ресурса во время выполнения программы
Доброго времени суток. допустим есть вот такая вещь : rsc =...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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