java.net.SocketTimeoutException(ANDROID)

时间:2016-04-04 04:35:02

标签: java android socket-timeout-exception

我使用以下代码进行连接 -

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/");签约并获得成功回复。
  • 检查更改超时时间但同样的异常。

问题在于此特定网址 - http://results.bput.ac.in/

信息

我给http://results.bput.ac.in/这个链接完全可以在任何网络浏览器上工作,而且没有任何滞后。

我得到的信息是有些人不能打开这个网站,它的滞后但我可以毫不拖延地打开它。

我的研究

我已经尝试过this SO questionthis SO questionthis github solutionjava code geeks solution,但没有结果。

更新

我用我的wifi和移动数据测试了这个,认为我的路由器可能有端口问题。但我的移动数据也有同样的例外。

有没有人对此有任何解决方案。

2 个答案:

答案 0 :(得分:2)

  

如果hostname解析为多个IP地址,则此客户端将按RFC 3484顺序尝试每个IP地址。如果连接到这些地址中的每一个都失败,则在连接尝试引发异常之前将经过多次超时。支持IPv6IPv4的主机名始终至少有2个IP地址.--   Doc

您已经使用过setConnectTimeout()并添加了最长时间,所以毫无疑问。 SocketTimeoutException 的主要原因是在建立连接之前是否超时。

然后主要和某些原因是无法建立与您的服务器的连接。

答案 1 :(得分:0)

我尝试了https://results.bput.ac.in/http://results.bput.ac.in/并且都超时了。可能你没有在服务器防火墙中打开端口80和/或443。