From d58d9ca62c259caf2b98445925f1b475e6642e5d Mon Sep 17 00:00:00 2001 From: none Date: Thu, 9 Mar 2023 14:16:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8hutool-json=E5=92=8Chutool-ht?= =?UTF-8?q?tp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 + .../java/xyz/playedu/api/util/HttpUtil.java | 220 ------------------ .../java/xyz/playedu/api/util/IpUtil.java | 25 +- 3 files changed, 21 insertions(+), 235 deletions(-) delete mode 100644 src/main/java/xyz/playedu/api/util/HttpUtil.java diff --git a/pom.xml b/pom.xml index d145d46..301e724 100644 --- a/pom.xml +++ b/pom.xml @@ -122,6 +122,17 @@ minio 8.5.2 + + + cn.hutool + hutool-json + 5.8.15 + + + cn.hutool + hutool-http + 5.8.15 + diff --git a/src/main/java/xyz/playedu/api/util/HttpUtil.java b/src/main/java/xyz/playedu/api/util/HttpUtil.java deleted file mode 100644 index 3399a68..0000000 --- a/src/main/java/xyz/playedu/api/util/HttpUtil.java +++ /dev/null @@ -1,220 +0,0 @@ -package xyz.playedu.api.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.net.ssl.*; -import java.io.*; -import java.net.*; -import java.nio.charset.StandardCharsets; -import java.security.cert.X509Certificate; - -/** - * HTTP工具类 - */ -public class HttpUtil { - - private static final Logger log = LoggerFactory.getLogger(HttpUtil.class); - - /** - * 向指定URL发送GET方法的请求 (不带参) - * - * @param url 发送请求的 URL - * @return 所代表远程资源的响应结果 - */ - public static String sendGet(String url) { - return sendGet(url, StringUtil.EMPTY); - } - - /** - * 向指定URL发送GET方法的请求 (带参固定编码) - * - * @param url 发送请求的 URL - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 - * @return 所代表远程资源的响应结果 - */ - public static String sendGet(String url, String param) { - return sendGet(url, param, "UTF-8"); - } - - /** - * 向指定URL发送GET方法的请求 (带参指定编码) - * - * @param url 发送请求的 URL - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 - * @param contentType 编码类型 - * @return 所代表远程资源的响应结果 - */ - public static String sendGet(String url, String param, String contentType) { - StringBuilder result = new StringBuilder(); - BufferedReader in = null; - try { - String urlNameString = StringUtil.isNotBlank(param) ? url + "?" + param : url; - log.info("sendGet - {}", urlNameString); - URL realUrl = new URL(urlNameString); - URLConnection connection = realUrl.openConnection(); - connection.setRequestProperty("accept", "*/*"); - connection.setRequestProperty("connection", "Keep-Alive"); - connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); - connection.connect(); - in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType)); - String line; - while ((line = in.readLine()) != null) { - result.append(line); - } - log.info("rev - {}", result); - } catch (ConnectException e) { - log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e); - } catch (SocketTimeoutException e) { - log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e); - } catch (IOException e) { - log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e); - } catch (Exception e) { - log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e); - } finally { - try { - if (in != null) { - in.close(); - } - } catch (Exception ex) { - log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); - } - } - return result.toString(); - } - - /** - * 向指定 URL 发送POST方法的请求 - * - * @param url 发送请求的 URL - * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 - * @return 所代表远程资源的响应结果 - * @author fzr - */ - public static String sendPost(String url, String param) { - PrintWriter out = null; - BufferedReader in = null; - StringBuilder result = new StringBuilder(); - try { - log.info("sendPost - {}", url); - URL realUrl = new URL(url); - URLConnection conn = realUrl.openConnection(); - conn.setRequestProperty("accept", "*/*"); - conn.setRequestProperty("connection", "Keep-Alive"); - conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); - conn.setRequestProperty("Accept-Charset", "utf-8"); - conn.setRequestProperty("contentType", "utf-8"); - conn.setDoOutput(true); - conn.setDoInput(true); - out = new PrintWriter(conn.getOutputStream()); - out.print(param); - out.flush(); - in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); - String line; - while ((line = in.readLine()) != null) { - result.append(line); - } - log.info("rev - {}", result); - } catch (ConnectException e) { - log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e); - } catch (SocketTimeoutException e) { - log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e); - } catch (IOException e) { - log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e); - } catch (Exception e) { - log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e); - } finally { - try { - if (out != null) { - out.close(); - } - if (in != null) { - in.close(); - } - } catch (IOException ex) { - log.error("调用in.close Exception, url=" + url + ",param=" + param, ex); - } - } - return result.toString(); - } - - /** - * 发送SSL的POST请求 - * - * @param url 请求地址 - * @param param 请求参数 - * @return String - * @author fzr - */ - public static String sendSSLPost(String url, String param) { - StringBuilder result = new StringBuilder(); - String urlNameString = url + "?" + param; - try { - log.info("sendSSLPost - {}", urlNameString); - SSLContext sc = SSLContext.getInstance("SSL"); - sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom()); - URL console = new URL(urlNameString); - HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(); - conn.setRequestProperty("connection", "Keep-Alive"); - conn.setRequestProperty("accept", "*/*"); - conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); - conn.setRequestProperty("Accept-Charset", "utf-8"); - conn.setRequestProperty("contentType", "utf-8"); - conn.setDoOutput(true); - conn.setDoInput(true); - - conn.setSSLSocketFactory(sc.getSocketFactory()); - conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); - conn.connect(); - InputStream is = conn.getInputStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(is)); - String ret; - while ((ret = br.readLine()) != null) { - if (!"".equals(ret.trim())) { - result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); - } - } - log.info("rev - {}", result); - conn.disconnect(); - br.close(); - } catch (ConnectException e) { - log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e); - } catch (SocketTimeoutException e) { - log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e); - } catch (IOException e) { - log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e); - } catch (Exception e) { - log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e); - } - return result.toString(); - } - - /** - * SSL证书协议接口 - */ - private static class TrustAnyTrustManager implements X509TrustManager { - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) { - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) { - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return new X509Certificate[]{}; - } - } - - /** - * POST请求安全接口 - */ - private static class TrustAnyHostnameVerifier implements HostnameVerifier { - @Override - public boolean verify(String hostname, SSLSession session) { - return true; - } - } - -} diff --git a/src/main/java/xyz/playedu/api/util/IpUtil.java b/src/main/java/xyz/playedu/api/util/IpUtil.java index 84b2162..27d648e 100644 --- a/src/main/java/xyz/playedu/api/util/IpUtil.java +++ b/src/main/java/xyz/playedu/api/util/IpUtil.java @@ -1,7 +1,8 @@ package xyz.playedu.api.util; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.Data; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,6 +10,7 @@ import jakarta.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.HashMap; public class IpUtil { @@ -61,27 +63,20 @@ public class IpUtil { return "内网"; } - @Data - class Response { - private String pro; - private String city; - private String region; - private String addr; - } - try { - String rspStr = HttpUtil.sendGet(IP_URL, "ip=" + ip + "&json=true", "GBK"); + String rspStr = HttpUtil.get(IP_URL, new HashMap<>() {{ + put("ip", ip); + put("json", true); + }}); if (StringUtil.isEmpty(rspStr)) { log.error("获取地理位置异常1 {}", ip); return UNKNOWN; } - ObjectMapper objectMapper = new ObjectMapper(); - Response obj = objectMapper.readValue(rspStr, Response.class); - return String.format("%s-%s", obj.getPro(), obj.getCity()); + JSONObject json = JSONUtil.parseObj(rspStr); + return String.format("%s-%s", json.getStr("pro"), json.getStr("city")); } catch (Exception e) { log.error("获取地理位置异常2 {} msg {}", ip, e.getMessage()); } - return UNKNOWN; }