From 010ef2a907e66efd4702443c06cdd18f8a7ffa5b Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 30 十月 2024 14:08:53 +0800 Subject: [PATCH] IP归属地查询接口集成 --- src/main/java/com/yeshi/buwan/util/IPUtil.java | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/yeshi/buwan/util/IPUtil.java b/src/main/java/com/yeshi/buwan/util/IPUtil.java index c24b684..6ea66e0 100644 --- a/src/main/java/com/yeshi/buwan/util/IPUtil.java +++ b/src/main/java/com/yeshi/buwan/util/IPUtil.java @@ -7,6 +7,7 @@ import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.methods.GetMethod; import org.lionsoul.ip2region.xdb.Searcher; +import org.yeshi.utils.HttpUtil; import javax.servlet.http.HttpServletRequest; import java.io.BufferedInputStream; @@ -16,6 +17,9 @@ import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; public class IPUtil { private static Searcher searcher; @@ -114,10 +118,25 @@ } public static IPInfo getLocalIPInfo(String ip) throws Exception { - String info = searcher.search(ip); - String[] infos = info.split("\\|"); - IPInfo ipInfo = new IPInfo(infos[0], infos[2], infos[3]); - return ipInfo; + String appcode = "46789780da4f4d92885c3d39b97e3ba9"; + // 閫氳繃闃块噷浜戠殑鎺ュ彛鑾峰彇IP淇℃伅 + String url = "https://zjip.market.alicloudapi.com/lifeservice/QueryIpAddr/query?ip=" + URLEncoder.encode(ip, "UTF-8"); + // 缃戠粶璇锋眰 + HttpClient client = new HttpClient(); + client.getHttpConnectionManager().getParams().setConnectionTimeout(2000); + GetMethod method = new GetMethod(url); + method.setRequestHeader("Authorization", "APPCODE " + appcode); + client.executeMethod(method); + String result = method.getResponseBodyAsString(); + System.out.println(result); + JSONObject data = JSONObject.fromObject(result); + if (data.optInt("error_code") == 0) { + data = data.optJSONObject("result"); + IPInfo ipInfo = new IPInfo(data.optString("country"), data.optString("province"), data.optString("city")); + return ipInfo; + } else { + throw new Exception(data.optString("reason")); + } } public static class IPInfo { @@ -158,7 +177,7 @@ public static void main(String[] args) { try { - IPInfo info = getLocalIPInfo("113.250.254.8"); + IPInfo info = getLocalIPInfo("113.250.254.8"); System.out.println(new Gson().toJson(info)); info = getLocalIPInfo("193.112.35.168"); System.out.println(new Gson().toJson(info)); -- Gitblit v1.8.0