| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | } |
| | | |
| | | 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 { |
| | |
| | | |
| | | 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)); |