Я создал следующую функцию для проверки состояния соединения:
private void checkConnectionStatus() {
HttpClient httpClient = new DefaultHttpClient();
try {
String url = "http://xxx.xxx.xxx.xxx:8000/GaitLink/"
+ strSessionString + "/ConnectionStatus";
Log.d("phobos", "performing get " + url);
HttpGet method = new HttpGet(new URI(url));
HttpResponse response = httpClient.execute(method);
if (response != null) {
String result = getResponse(response.getEntity());
...
Когда я выключаю сервер для тестирования, выполнение долго ждет в очереди
HttpResponse response = httpClient.execute(method);
Кто-нибудь знает, как установить таймаут, чтобы не ждать слишком долго?
Спасибо!
java
android
timeout
httpresponse
Нико Гамулин
источник
источник
Чтобы установить настройки на клиенте:
Я успешно использовал это на JellyBean, но также должен работать на старых платформах ....
НТН
источник
Если вы используете http-библиотеку Jakarta, вы можете сделать что-то вроде:
источник
Если вы используете http-клиент по умолчанию, вот как это сделать, используя http-параметры по умолчанию:
Первоначальный кредит предоставляется по адресу http://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/.
источник
Если вы говорите, что ответ @ kuester2000 не работает, учтите, что HTTP-запросы сначала пытаются найти IP-адрес хоста с помощью DNS-запроса, а затем отправляют фактический HTTP-запрос на сервер, поэтому вам также может потребоваться установить тайм-аут для запроса DNS.
Если ваш код работал без тайм-аута для запроса DNS, это потому, что вы можете подключиться к DNS-серверу или попали в DNS-кеш Android. Кстати, вы можете очистить этот кеш, перезагрузив устройство.
Этот код расширяет исходный ответ, чтобы включить ручной поиск DNS с пользовательским таймаутом:
Используемый метод:
Этот класс из этого блога . Идите и проверьте замечания, если вы будете использовать его.
источник
источник
Вы можете создать экземпляр HttpClient, используя Httpclient-android-4.3.5, он может хорошо работать.
источник
Один из вариантов - использовать OkHttp. клиент от Square.
Добавить библиотечную зависимость
В build.gradle включите эту строку:
Где
x.x.x
находится нужная версия библиотеки.Установить клиент
Например, если вы хотите установить тайм-аут 60 секунд, сделайте так:
PS: если ваш minSdkVersion больше 8, вы можете использовать
TimeUnit.MINUTES
. Итак, вы можете просто использовать:Для получения дополнительной информации о единицах см. TimeUnit .
источник
Если вы используете
HttpURLConnection
, позвоните,setConnectTimeout()
как описано здесь :источник
источник