api.springboot.mybatis/src/main/java/com/example/demo/config/HttpUtil.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;
}
}