java.net.UnknownHostException 解決方法

_陳哈哈發表於2020-09-23

  今天有位小夥伴來求助,說他們公司用的單點登入,介面URL在公司的公網域名下,如(https://www.csdn.net/xxx/login),他打包好的Web專案在自己機子上跑沒問題,一部署到伺服器就報 java.net.UnknownHostException 錯誤,從字面上看是請求目標的服務連不上,網路不通。這到底是怎麼回事?又該怎麼解決呢?mark一下

一般原因:

  • 1.伺服器沒網,調不到公網域名,無法解析出IP,從而無法識別host,導致無法連線;
  • 2.網路埠對映做了策略,呼叫不到自己路由的域名,必須調內網IP;

  詢問了小夥伴一下,她屬於第一種,伺服器沒網,但她們單點登入服務也在同一個內網,按理應該通的。

  那麼就清楚了,說明Web伺服器沒有配置和單點登入服務 域名/IP的對映關係,所以訪問不到,需要在hosts檔案中把介面的 IP/域名 寫上,在伺服器傳送請求時,就會自動把域名轉成IP進行呼叫了。

解決步驟:

下面我將以CSDN的域名為例(www.csdn.net)。注:小夥伴的伺服器是Windows,和Linux修改方式基本相同

  1. 用有網際網路的機器 window+r → cmd 進入dos視窗

  2. 獲取www.csdn.net 域名對應的IP,命令:nslookup www.csdn.net
    在這裡插入圖片描述
    插一句嘴,國內whois網站(如站長之家)都是封裝了各種類似命令整合一下而已
    在這裡插入圖片描述

  3. 開啟hosts檔案, C:\Windows\System32\drivers\etc\hosts (Linux中一般在:/etc/hosts)

  4. 修改hosts檔案,把域名和IP寫到hosts檔案中,用於域名解析成IP
    在這裡插入圖片描述

  5. 執行:ipconfig /flushdns #清除DNS快取,重新整理

完成,這樣你就可以調到CSDN域名下的介面了:如 - https://www.csdn.net/xxx/login

希望你已經解決了這個問題,如果有其他疑惑,評論區等你哦~

相關文章