Выполнение HttpClient продолжает давать исключение ConnectTimeoutException - PullRequest
5 голосов
/ 15 июля 2011

У меня есть очень большая ошибка в моем приложении, которую я действительно не могу решить. Всякий раз, когда я делаю звонок отдыха с помощью следующего кода:

  HttpGet request = new HttpGet(url + getParams());

  HttpParams httpParameters = new BasicHttpParams();
  HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
  HttpConnectionParams.setSoTimeout(httpParameters, 10000);

  DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);

  httpClient.execute(request);

Я получаю ошибку в DDMS:

07-15 11:22:47.448: WARN/System.err(973): org.apache.http.conn.ConnectTimeoutException: Connect to (some ip-address) timed out

Но иногда код работает идеально, и я получаю свои данные, как и должно. Я также проверил вызов сервера с помощью обычного веб-браузера на моем компьютере, который всегда возвращает мои данные в течение 100 мс. Так что я делаю не так? Я также проверил это на другом устройстве, но это дает мне ту же проблему. Я был бы так рад, если бы кто-то мог решить мою проблему:)

Ответы [ 4 ]

5 голосов
/ 13 января 2012

Проблема в DefaultHttpClient.Вы используете это асинхронно?Поскольку DefaultHttpClient не является поточно-ориентированным, его использование в асинхронной среде может вызвать проблемы.У меня была эта проблема раньше, когда моя деятельность запускала несколько соединений Http в то же время, и я в конечном итоге изменил его на использование HttpURLConnection.Вы можете сослаться на этот сайт: http://www.vogella.de/articles/AndroidNetworking/article.html

1 голос
/ 05 августа 2011

У меня такая же проблема.

Попробуйте использовать прямой IP для ваших запросов. Я заметил, что поиск DNS в Android иногда ведет себя довольно странно. Я искал и нашел это: http://mailinglists.945824.n3.nabble.com/Android-and-reverse-DNS-lookup-issues-td3011461.html.

Не знаю, актуально это или нет, я все еще пытаюсь найти обходной путь. Может быть, кто-то здесь может взглянуть и разобраться.

0 голосов
/ 29 октября 2015

Была похожая проблема, могла быть воспроизведена только при попытке подключения с использованием нескольких устройств одновременно, и решение было:

Перезагрузка экземпляра решена проблема с подключениями. (или просто нужно перезапустить сетевой сервис)

(c) Мой сервер / экземпляр admin

Также есть люди, которые сталкиваются с подобными проблемами, и некоторые другие решения работали для них, например:

  1. Отключить tcp_timestamp
  2. Отключить tcp_tw_reuse & tcp_tw_recycle
  3. Включен режим сохранения vm в манифесте Android: android: vmSafeMode = "true"

0 голосов
/ 15 июля 2011

Проверьте, можете ли вы подключиться, используя компьютер для разработки. Также проверьте время загрузки.Есть очень хороший шанс, что ваши тайм-ауты слишком малы.

...