2 回答

TA貢獻1835條經驗 獲得超7個贊
我推薦使用http://ip-api.com/docs/api:newline_separated
然后您可以選擇您需要的信息并創建您的 HTTP 鏈接,例如:
http://ip-api.com/line/8.8.8.8?fields=49471
此示例中的結果將是:
success
United States
US
VA
Virginia
Ashburn
20149
America/New_York
因此,您可以在 Java 中創建一個方法來讀取 HTTP 并將其拆分\n為獲取行:
private void whatever(String ip) {
String ipinfo = getHttp("http://ip-api.com/line/" + ip + "?fields=49471");
if (ipinfo == null || !ipinfo.startsWith("success")) {
// TODO: failed
return;
}
String[] lines = ipinfo.split("\n");
// TODO: now you can get the info
String country = lines[1];
/*
...
*/
}
private static String getHttp(String url) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new URL(url).openStream()));
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line).append(System.lineSeparator());
}
br.close();
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
只需確保不要在短時間內創建太多查詢,因為 ip-api.com 會禁止您這樣做。

TA貢獻1820條經驗 獲得超9個贊
有很多網站提供免費的 IP 地理定位數據庫。
例子包括:
在插件啟動時,您可以下載這些數據庫之一,然后在運行時在本地查詢它。
如果您選擇下載 .bin 格式,則必須初始化本地數據庫,然后導入數據。否則,您可以將 csv 文件與opencsv之類的 Java 庫一起使用。
從 opencsv 的文檔:
對于閱讀,創建一個 bean 來存放您想要閱讀的信息,用 opencsv 注釋注釋 bean 字段,然后執行以下操作:
List<MyBean> beans = new CsvToBeanBuilder(FileReader("yourfile.csv")) .withType(Visitors.class).build().parse();
文檔鏈接: http: //opencsv.sourceforge.net
添加回答
舉報