天天看點

java.net.UnknownHostException 解決方法

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

1.伺服器沒網,調不到公網域名,無法解析出IP,進而無法識别host,導緻無法連接配接;

2.網絡端口映射做了政策,調用不到自己路由的域名,必須調内網IP;

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

  那麼就清楚了,說明<code>Web伺服器沒有配置和單點登入服務 域名/IP的映射關系</code>,是以通路不到,<code>需要在hosts檔案中把接口的 IP/域名 寫上</code>,在伺服器發送請求時,就會自動把域名轉成IP進行調用了。

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

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

擷取www.csdn.net 域名對應的IP,指令:nslookup www.csdn.net

java.net.UnknownHostException 解決方法

插一句嘴,國内whois網站(如站長之家)都是封裝了各種類似指令內建一下而已

java.net.UnknownHostException 解決方法

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

修改hosts檔案,把域名和IP寫到hosts檔案中,用于域名解析成IP

java.net.UnknownHostException 解決方法

執行:ipconfig /flushdns #清除DNS緩存,重新整理

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

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