Java獲取本機公網IP方法彙總

一、通過第三方IP查詢平臺曲線獲取本機公網IP(最準確、不穩定)

原理:通過類似ipip.net站長工具,獲取訪問者設置IP信息,由於國內設置多級路由跳轉,通過該方法獲取的IP地址準確性十分的高(畢竟別人就是做這個事的。。)缺陷就是官方未提供外部接口,只能通過正則表達式對頁面上IP所在的元素標籤進行獲取。

示例如下:

  • 測試站長網址:http://ip.chinaz.com/
  • 元素標識:<dd class="fz24">171.88.45.2**</dd>,標籤內的171.88.45.2**即爲本機公網IP

核心代碼:

	/**
	*@Function
	*@Description 得到本機外網ip
	**/
	public static String getV4IP() {
		String ip = "";
		String chinaz = "http://ip.chinaz.com/";

		String inputLine = "";
		String read = "";
		try {
			URL url = new URL(chinaz);
			HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
			BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
			while ((read = in.readLine()) != null) {
				inputLine += read;
			}
			System.out.println(inputLine);

		} catch (Exception e) {
			e.printStackTrace();
		}
		//正則匹配標籤,注意\\
		Pattern p = Pattern.compile("\\<dd class\\=\"fz24\">(.*?)\\<\\/dd>");
		Matcher m = p.matcher(inputLine);
		if(m.find()){
			ip = m.group(1);
		}
		return ip;
	}

補充

  • 關於獲取頁面上指定元素標籤的方法:
    以Chrome瀏覽器爲例,F12進行控制檯,切換到Elements標籤,點擊元素選擇器(即左上角鼠標圖標或快捷鍵Ctrl+Shift+C)光標移到頁面IP顯示位置點擊鼠標,控制檯會自動定位到元素標籤
  • 如果拋出異常:java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletResponse,手動導入Tomcat安裝目錄下servlet.jar包即可

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章