whycxzp
2025-03-29 aac28887fb91aa95a086794f1cdd03080c4e3c5c
src/main/java/com/whyc/util/HttpUtil.java
@@ -4,6 +4,7 @@
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import com.whyc.dto.Response;
import com.whyc.dto.Response4Http;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -56,51 +57,6 @@
      return getSession().getServletContext();
   }
   /*
    * 获取将对象转换成json格式
    */
   public static String toJson(Object obj){
      Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
      return gson.toJson(obj);
   }
   public static String chageDateToString(Date time,String type){
      String msg = "";
      SimpleDateFormat sdf = new SimpleDateFormat(type);
      msg = sdf.format(time);
      return msg;
   }
   /**
    *
    * @param datetype   需要解析的日期的格式如:"yyyy-MM-dd HH:mm:ss"
    * @return   得到对应的gson对象
    */
   public static Gson getGson(String datetype){
      return new  GsonBuilder().setDateFormat(datetype).create();
   }
   /**
    * 获取默认的gson对象
    * @return
    */
   public static Gson getGson(){
      return new Gson();
   }
   public static <T> T getObject(String jsonstring,Type listtype){
      Gson gson=new Gson();
      T t=null;
      try {
         t=gson.fromJson(jsonstring, listtype);
      } catch (JsonSyntaxException e) {
         e.printStackTrace();
      }
      return t;
   }
   /**
    * get方式的http请求
    *
@@ -144,7 +100,7 @@
      } catch (IOException e) {
         response.set(0);
         String message = e.getMessage();
         response.setData(message);
         response.setMsg(message);
      } finally {
         // 关闭资源
         if (null != bufferedReader) {
@@ -186,14 +142,17 @@
         connection.setConnectTimeout(5000);
         // 设置读取远程返回的数据时间:60000毫秒
         connection.setReadTimeout(6000);
         //设置contentType固定为application/json
         connection.setRequestProperty("Content-Type","application/json");
         //请求体
         connection.setDoOutput(true);
         outputStream = connection.getOutputStream();
         OutputStreamWriter osw = new OutputStreamWriter(outputStream,"UTF-8");
         osw.write(requestBody);
         osw.flush();
         if(requestBody != null) {
            osw.write(requestBody);
            osw.flush();
         }
         // 发送请求
         connection.connect();
         // 通过connection连接,获取输入流
@@ -215,7 +174,7 @@
      } catch (IOException e) {
         String message = e.getMessage();
         response.set(0);
         response.setData(message);
         response.setMsg(message);
      } finally {
         // 关闭资源
         if (null != bufferedReader) {
@@ -265,4 +224,45 @@
      result = result.substring(0, result.lastIndexOf("&"));
      return result;
   }
   /**
    * 用于Video 的Http接口请求
    * 执行GET请求,传入Map参数和Url,获取响应
    * 这个对原始的doGet方法进行了调用,对结果进行后续逻辑再处理,属于定制化的接口了.
    */
   public static Response4Http doGet(String httpUrl, Map<String, ?> params) {
      Response4Http responseResult = new Response4Http<>();
      String queryParams = urlEncode(params);
      Response response = HttpUtil.doGet(httpUrl, queryParams);
      Integer httpResponseCode = response.getCode();
      String responseJson = (String) response.getData();
      if(httpResponseCode == 1) { //请求成功
         Response4Http responseHttp = JsonUtil.getGson().fromJson(responseJson, Response4Http.class);
         if(responseHttp.getCode() == 0 ) { //接口返回状态码为成功
            //返回信息有 data属性
            if(responseHttp.getData()!=null) {
               return responseResult.setII(1,true,responseHttp.getData(),null);
            }
            //返回信息有 status属性
            else if(responseHttp.getStatus() !=null){
               return responseResult.setStatus(1,true,responseHttp.getStatus());
            }
            //返回信息有 result属性
            else if(responseHttp.getResult() !=null){
               responseResult.setResult(responseHttp.getResult());
               return responseResult.set(1,true);
            }
            else{
               return responseResult.set(1,true,"请求成功且返回数据正常,无数据信息");
            }
         }else{ //接口返回状态码为失败
            // 返回信息有 msg属性
            return responseResult.set(1,false,responseHttp.getMsg());
         }
      }else{ //请求失败
         return responseResult.set(0,response.getData(),response.getMsg());
      }
   }
}