java.net.SocketTimeoutException (ANDROID)

Я использовал следующий код для подключения -

URL url = new URL("https://results.bput.ac.in/");

HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(1000 * 20);

urlc.connect();

Он вернул SocketTimeoutException .

Исключение

Точное исключение, которое я получаю, это

java.net.SocketTimeoutException: failed to connect to results.bput.ac.in/14.139.212.166 (port 443) after 90000ms

и иногда это -

java.net.SocketTimeoutException: failed to connect to results.bput.ac.in/14.139.212.166 (port 80) after 90000ms
  • попытался удалить urlc.setConnectTimeout(1000 * 20); и все равно получил исключение.
  • проверил с http вместо https URL url = new URL("http://results.bput.ac.in/");, но безрезультатно.
  • проверил URL url = new URL("https://www.facebook.com/"); и получил успешный ответ.
  • Проверено с изменением периода ожидания, но с тем же исключением.

Проблема с этим конкретным URL - http://results.bput.ac.in/ .

Информация

Эта ссылка, которую я дал http://results.bput.ac.in/, отлично работает в любом веб-браузере без каких-либо задержек.

Я получил информацию о том, что некоторые ребята не могут открыть этот сайт, он тормозит, но я могу открыть его без каких-либо задержек.

Мои исследования

Я уже пробовал этот вопрос SO, этот вопрос SO, это решение github и решение для гиков java-кода, но не дало результата.

Обновить

Я проверил это с моим Wi-Fi и мобильными данными, думая, что у моего маршрутизатора могут быть проблемы с портом. но у меня такое же исключение и с мобильными данными.

У кого-нибудь есть какое-либо решение для этого.


person Sagar Nayak    schedule 04.04.2016    source источник
comment
эта ссылка работает?   -  person Pankaj Nimgade    schedule 04.04.2016
comment
я отредактировал свой вопрос. @PankajNimgade ссылка работает.   -  person Sagar Nayak    schedule 04.04.2016
comment
я попробовал эту ссылку в браузере, но время ожидания истекло, вы уверены   -  person Pankaj Nimgade    schedule 04.04.2016
comment
я попробовал это сейчас @PankajNimgade, и загрузка заняла около 1 секунды.   -  person Sagar Nayak    schedule 04.04.2016


Ответы (2)


Если hostname разрешается в несколько IP-адресов, этот клиент попытается использовать каждый в порядке RFC 3484. Если подключиться к каждому из этих адресов не удается, истечет несколько тайм-аутов, прежде чем попытка подключения вызовет исключение. Имена хостов, которые поддерживают как IPv6, так и IPv4, всегда имеют как минимум 2 IP-адреса. -- Doc

Вы уже использовали setConnectTimeout() и добавили максимальное время, так что в этом нет сомнений. Основная причина SocketTimeoutException заключается в том, что тайм-аут истекает до того, как соединение будет установлено.

Тогда основная и определенная причина - Не удалось установить соединение с вашим сервером.

person Shree Krishna    schedule 04.04.2016
comment
что бы я тогда делал? любое решение? - person Sagar Nayak; 04.04.2016
comment
Убедитесь, что вы можете открыть этот URL и установить правильное соединение. ваш сервер не отвечает, но https://www.facebook.com подойдет, так что он работает нормально. Это означает, что вы не имеете ничего общего с этой ошибкой на стороне клиента, пока не исправите проблему тайм-аута соединения. - person Shree Krishna; 04.04.2016
comment
Я также пытался не указывать период ожидания, и это тоже дает ошибку. - person Sagar Nayak; 04.04.2016
comment
Нет, это не сработает, не удаляйте это. Просто убедитесь, что вы можете открыть этот URL-адрес из браузера вашего устройства за короткое время. - person Shree Krishna; 04.04.2016
comment
Если вы можете легко открыть это из своего браузера, ваш код должен работать нормально. Но я думаю, что это все еще отстает. Он не открывается нами. - person Shree Krishna; 04.04.2016
comment
Итак, если вы не можете открыть эту ссылку, которую я дал, то как решить эту проблему? потому что я могу открыть его, а вы не можете, но вы говорите, что он отстает. поэтому я должен просто увеличить период ожидания. - person Sagar Nayak; 04.04.2016
comment
Да, вы также можете попробовать увеличить это, сколько времени требуется, чтобы открыть это в вашем браузере? - person Shree Krishna; 04.04.2016
comment
открывается мгновенно, а в худшем случае открывается за 1 сек. - person Sagar Nayak; 04.04.2016
comment
SocketTimeoutException означает либо тайм-аут соединения, или тайм-аут чтения. В данном случае это означает тайм-аут соединения. - person user207421; 04.04.2016
comment
@EJP Я также говорю об этом, если время ожидания истекает до того, как соединение будет установлено. Тогда почему оно может быть отключено? - person Shree Krishna; 04.04.2016

Я пробовал как https://results.bput.ac.in/, так и http://results.bput.ac.in/, и время ожидания обоих истекло. Вероятно, вы не открыли порты 80 и/или 443 в брандмауэре сервера.

person user207421    schedule 04.04.2016
comment
Как я могу это сделать ? - person Sagar Nayak; 04.04.2016