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