工具類|通過Java很簡單的方式獲取當前機器外網地址~
阿新 • • 發佈:2021-02-07
在開發微信支付的專案時候,企業支付中需要配置伺服器的IP地址,之前有的時候是配置檔案的方式進行配置,後來感覺太麻煩了。每次部署到不同伺服器的時候都需要修改,後來改用了自動獲取的方式進行配置。效果還不錯,分享一下。
直接上程式碼工具類,可以取走直接用:
package com.fengchen.ip;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import net.sf.json.JSONObject;
/**
* 獲取當前本機外網IP地址
* @author dafei
*
*/
public class IPUtil {
public static String getInternetIp()
{
String ipJson = getIpJson();
JSONObject jo = JSONObject.fromObject(ipJson);
if(jo.has("ip"))
{
return jo.getString("ip");
}
return null;
}
public static String getIpJson()
{
Process process;
BufferedInputStream bis = null;
BufferedReader br = null;
try {
process = Runtime.getRuntime().exec("curl http://ipinfo.io");
bis = new BufferedInputStream(
process.getInputStream());
br = new BufferedReader(new InputStreamReader(bis));
String line;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
finally
{
if(bis != null)
{
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(br != null)
{
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
public static void main(String[] args) {
String ip = getInternetIp();
System.out.println(ip);
}
}
推薦下大飛做的一個Java技術類公眾號“Java實戰寶典”,主要是收集一些日常工作中常用的工具類,一些實戰專案的教學及一些疑難問題整理。
以上工具類在關注公眾號後輸入“1005”即可獲得maven測試工程。