Selaa lähdekoodia

更新 WebClient 和正则匹配, 添加 Class 工具

reghao 3 vuotta sitten
vanhempi
commit
874273d013

+ 30 - 0
jdk/src/main/java/cn/reghao/jutil/jdk/clazz/ClassUtil.java

@@ -0,0 +1,30 @@
+package cn.reghao.jutil.jdk.clazz;
+
+import java.lang.reflect.Method;
+
+/**
+ * @author reghao
+ * @date 2023-02-21 10:06:26
+ */
+public class ClassUtil {
+    public static Method findMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) {
+        try {
+            return clazz.getMethod(methodName, paramTypes);
+        }
+        catch (NoSuchMethodException ex) {
+            return findDeclaredMethod(clazz, methodName, paramTypes);
+        }
+    }
+
+    public static Method findDeclaredMethod(Class<?> clazz, String methodName, Class<?>... paramTypes) {
+        try {
+            return clazz.getDeclaredMethod(methodName, paramTypes);
+        }
+        catch (NoSuchMethodException ex) {
+            if (clazz.getSuperclass() != null) {
+                return findDeclaredMethod(clazz.getSuperclass(), methodName, paramTypes);
+            }
+            return null;
+        }
+    }
+}

+ 8 - 6
jdk/src/main/java/cn/reghao/jutil/jdk/http/WebClient.java

@@ -13,11 +13,15 @@ import java.util.Map;
  * @date 2021-10-16 13:30:58
  */
 public class WebClient implements WebRequest {
+    private final HttpClient client = HttpClient.newHttpClient();
+    private final int timeout = 30;
+
     @Override
     public int head(String url) {
-        HttpClient client = HttpClient.newHttpClient();
         HttpRequest request = HttpRequest.newBuilder()
                 .uri(URI.create(url))
+                .version(HttpClient.Version.HTTP_1_1)
+                .GET()
                 .build();
         try {
             HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
@@ -29,10 +33,9 @@ public class WebClient implements WebRequest {
 
     @Override
     public WebResponse get(String url) {
-        HttpClient client = HttpClient.newHttpClient();
         HttpRequest request = HttpRequest.newBuilder()
                 .uri(URI.create(url))
-                .timeout(Duration.ofSeconds(30))
+                .timeout(Duration.ofSeconds(timeout))
                 .build();
         try {
             HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
@@ -49,16 +52,15 @@ public class WebClient implements WebRequest {
 
     @Override
     public WebResponse postJson(String url, String json) {
-        HttpClient httpClient = HttpClient.newHttpClient();
         HttpRequest httpRequest = HttpRequest.newBuilder()
                 .uri(URI.create(url))
                 .header("Content-Type", "application/json")
                 .POST(HttpRequest.BodyPublishers.ofString(json))
-                .timeout(Duration.ofSeconds(30))
+                .timeout(Duration.ofSeconds(timeout))
                 .build();
 
         try {
-            HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
+            HttpResponse<String> response = client.send(httpRequest, HttpResponse.BodyHandlers.ofString());
             return WebResponse.of(response);
         } catch (Exception e) {
             return WebResponse.error(e.getMessage());

+ 25 - 0
jdk/src/main/java/cn/reghao/jutil/jdk/striing/StringRegexp.java

@@ -0,0 +1,25 @@
+package cn.reghao.jutil.jdk.striing;
+
+import java.util.regex.Pattern;
+
+/**
+ * @author reghao
+ * @date 2023-02-20 13:53:17
+ */
+public class StringRegexp {
+    private static final Pattern mobilePattern = Pattern.compile("^1(3\\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$");
+    private static final Pattern emailPattern = Pattern.compile("^[A-Za-z0-9\\u4e00-\\u9fa5]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$");
+    private static final Pattern ipv4Pattern = Pattern.compile("^((2((5[0-5])|([0-4]\\d)))|([0-1]?\\d{1,2}))(\\.((2((5[0-5])|([0-4]\\d)))|([0-1]?\\d{1,2}))){3}$ ");
+
+    public static boolean matchMobile(String str) {
+        return mobilePattern.matcher(str).matches();
+    }
+
+    public static boolean matchEmail(String str) {
+        return emailPattern.matcher(str).matches();
+    }
+
+    public static boolean matchIPv4Address(String str) {
+        return ipv4Pattern.matcher(str).matches();
+    }
+}