目錄
從gitee拉取ip2region.xdb資源文件
?寫測試類
注意要寫對資源路徑
?本地測試結果
?編輯?遠端測試結果
從gitee拉取ip2region.xdb資源文件
git clone https://gitee.com/lionsoul/ip2region.git
?將xdb放入resources資源文件夾
引入依賴?
<dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>2.7.0</version>
</dependency>
?
寫測試類
private Searcher searcher;@GetMapping("test")@ApiOperation("test")public String test() throws IOException {HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();String ipAddress = null;try {// 獲取請求客戶端的ipipAddress = request.getHeader("x-forwarded-for");if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("WL-Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getRemoteAddr();if (ipAddress.equals("127.0.0.1")||ipAddress.equals("0:0:0:0:0:0:0:1")) {ipAddress = "127.0.0.1";}}// 判斷ip是否符合規格if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()// = 15if (ipAddress.indexOf(",") > 0) {ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));}}} catch (Exception e) {ipAddress="";}if ("127.0.0.1".equals(ipAddress) || ipAddress.startsWith("192.168")) {return "局域網 ip";}String dbPath;if (searcher == null) {try {// 加載ip2region 文件searcher=Searcher.newWithFileOnly("pipayshop-api/src/main/resources/ipdb/ip2region.xdb");} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}String region = null;String errorMessage = null;try {// 獲取地區region = searcher.search(ipAddress);} catch (Exception e) {errorMessage = e.getMessage();if (errorMessage != null && errorMessage.length() > 256) {errorMessage = errorMessage.substring(0,256);}e.printStackTrace();}// 輸出 regionreturn region;}
注意要寫對資源路徑
本地的資源路徑
遠端服務器資源路徑(需要與你寫的路徑一一對應,不然找不到文件)