134 lines
4.0 KiB
Java
134 lines
4.0 KiB
Java
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<String> 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;
|
|
}
|
|
}
|