package com.example.demo.config; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.IOUtils; import org.json.JSONObject; import org.apache.commons.lang3.StringUtils; import com.google.gson.Gson; public class HttpUtil { /* ===================== GET ===================== */ public static String sendGet(String url) { HttpURLConnection conn = null; try { URL u = new URL(url); conn = (HttpURLConnection) u.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(3000); conn.setReadTimeout(3000); try (InputStream in = new BufferedInputStream(conn.getInputStream())) { return IOUtils.toString(in, StandardCharsets.UTF_8); } } catch (Exception e) { e.printStackTrace(); return null; } finally { if (conn != null) conn.disconnect(); } } /* ===================== POST JSON ===================== */ public static String sendObject2Json(String url, Object object) { HttpURLConnection conn = null; try { URL u = new URL(url); conn = (HttpURLConnection) u.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); conn.setDoOutput(true); conn.setConnectTimeout(3000); conn.setReadTimeout(3000); String jsonStr = new Gson().toJson(object); try (OutputStream os = conn.getOutputStream()) { os.write(jsonStr.getBytes(StandardCharsets.UTF_8)); } try (InputStream in = new BufferedInputStream(conn.getInputStream())) { return IOUtils.toString(in, StandardCharsets.UTF_8); } } catch (Exception e) { e.printStackTrace(); return null; } finally { if (conn != null) conn.disconnect(); } } /* ===================== POST FORM ===================== */ public static String sendObject2Post(String url, Object object) { HttpURLConnection conn = null; try { URL u = new URL(url); conn = (HttpURLConnection) u.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); conn.setDoOutput(true); JSONObject json = new JSONObject(new Gson().toJson(object)); StringBuilder sb = new StringBuilder(); Iterator keys = json.keys(); while (keys.hasNext()) { String key = keys.next(); sb.append(key) .append("=") .append(URLEncoder.encode(json.getString(key), "UTF-8")) .append("&"); } try (OutputStream os = conn.getOutputStream()) { os.write(sb.toString().getBytes(StandardCharsets.UTF_8)); } try (InputStream in = new BufferedInputStream(conn.getInputStream())) { return IOUtils.toString(in, StandardCharsets.UTF_8); } } catch (Exception e) { e.printStackTrace(); return null; } finally { if (conn != null) conn.disconnect(); } } /* ===================== Client IP ===================== */ public static String getClientIp(HttpServletRequest request) { String ip = request.getHeader("HTTP_X_FORWARDED_FOR"); if (StringUtils.isBlank(ip)) { ip = request.getRemoteAddr(); } return ip; } }