Package http.demo

Class HttpDemoUtil

java.lang.Object
http.demo.HttpDemoUtil

public class HttpDemoUtil extends Object
http 工具示例类
Since:
2020/7/9 5:42 下午
Version:
1.0.0
Author:
Hsiong
  • Constructor Details

    • HttpDemoUtil

      public HttpDemoUtil()
      Default constructor added by Java.
  • Method Details

    • sendGet

      public static <T, M> M sendGet(String url, T paramObj, Map<String,String> header, Class<M> responseClass)
      向指定URL发送GET方法的请求
      Type Parameters:
      T - 返回类型
      M - 返回子类型
      Parameters:
      url - 发送请求的URL
      paramObj - 请求参数,以对象的形式
      header - 请求头, "key1":"value1"的形式
      responseClass - 返回子类型
      Returns:
      String 所代表远程资源的响应结果
    • sendDelete

      public static <T, M> M sendDelete(String url, T paramObj, Map<String,String> header, Class<M> responseClass)
      向指定URL发送 delete 方法的请求
      Type Parameters:
      T - 返回类型
      M - 返回子类型
      Parameters:
      url - 发送请求的URL
      paramObj - 请求参数,以对象的形式
      header - 请求头, "key1":"value1"的形式
      responseClass - 返回子类型
      Returns:
      String 所代表远程资源的响应结果
    • sendGetPage

      public static <T, M> List<M> sendGetPage(String url, T paramObj, Map<String,String> header, Class<M> responseClass)
      发送分页请求
      Type Parameters:
      T - 返回类型
      M - 返回子类型
      Parameters:
      url - 接口地址
      paramObj - 返回类型
      header - 加密头
      responseClass - 返回子类型
      Returns:
      T 所代表远程资源的响应结果
    • sendPost

      public static <M> M sendPost(String url, String param, Map<String,String> header, Class<M> responseClass)
      向指定 URL 发送POST方法的请求
      Type Parameters:
      M - 返回子类型
      Parameters:
      url - 发送请求的 URL
      param - 请求参数,请求参数应该是 name1=value1 name2=value2 的形式。
      header - 请求头
      responseClass - 返回子类型
      Returns:
      所代表远程资源的响应结果 Content type 'application/json;charset=UTF-8' not supported // 请考虑接口入参的情况
    • sendObjPost

      public static <M> M sendObjPost(String url, Object param, Map<String,String> header, Class<M> responseClass)
    • sendPostFile

      public static <T, M> M sendPostFile(String url, T paramObj, String dir, Map<String,String> header, Class<M> responseClass)
      发送 post 文件请求
      Type Parameters:
      T - 返回类型
      M - 子类型
      Parameters:
      url - 远程接口地址
      paramObj - 返回类型
      dir - 文件路径
      header - 消息头
      responseClass - 子类型
      Returns:
      T 所代表远程资源的响应结果
    • getRet

      private static <T> T getRet(String result, Class<T> responseClass)
      将返回值解析为泛型
      Type Parameters:
      T - 返回类型
      Parameters:
      result - 返回字符串
      responseClass - 返回子类型 // 实现 java 泛型声明 java 实例 BaseRes s = new BaseRes(responseClass.getDeclaredConstructor().newInstance());
      Returns:
      T 所代表远程资源的响应结果
      See Also:
      • alibaba-fastjson 不支持泛型转换的原因: fastJson 将所有{} 识别成 JSONObject; 而不是泛型, 故使用 JSONObject.parseObject 的成员变量为jsonObj
      • alibaba-fastjson 实现逻辑: JsonObject 是 java-map 的实现类, 通过 com.alibaba.fastjson.ci.junit.util.TypeUtils#castToJavaBean 实现转换
      • fastjson mapToJavaBean
      • 实现逻辑: fastjson 用 ParameterizedType.class 通过递归构造了一个多层泛型的类型, 简直代码之精髓!
    • getRetPage

      private static <T> List<T> getRetPage(String result, Class<T> responseClass)
      将返回值解析为分页泛型
      Type Parameters:
      T - 返回类型
      Parameters:
      result - 结果字符串
      responseClass - 返回嵌套类型
      Returns:
      所代表远程资源的响应结果