簡體   English   中英

java.net.SocketTimeoutException(ANDROID)

[英]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/"); 並得到了成功的回應。
  • 檢查更改超時時間但同樣的異常。

問題在於這個特定的網址 - http://results.bput.ac.in/

信息

我給http://results.bput.ac.in/這個鏈接完全適用於任何網絡瀏覽器,沒有任何滯后。

我得到的信息是,一些人不能打開這個網站,它的滯后但我可以毫不拖延地打開它。

我的研究

我已經嘗試過這個問題這個問題這個github解決方案java代碼極客解決方案但沒有結果。

更新

我用我的wifi和移動數據測試了這個,認為我的路由器可能有端口問題。 但我的移動數據也有同樣的例外。

有沒有人有任何解決方案。

如果hostname解析為多個IP地址,則此客戶端將按RFC 3484順序嘗試每個IP地址。 如果連接到這些地址中的每一個都失敗,則在連接嘗試引發異常之前將經過多次超時。 支持IPv6IPv4主機名始終至少有2個IP地址.-- Doc

您已經使用了setConnectTimeout()並添加了最長時間,所以毫無疑問。 SocketTimeoutException的主要原因是在建立連接之前超時。

然后主要和某些原因是無法建立與您的服務器連接。

我嘗試了https://results.bput.ac.in/http://results.bput.ac.in/ ,兩者都超時了。 可能您沒有在服務器防火牆中打開端口80和/或443。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM