package com.farriver.bwf.common.utilities; import com.farriver.bwf.common.model.ApiData; import jakarta.servlet.http.HttpServletRequest; import org.apache.http.StatusLine; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.HashMap; import java.util.Map; import java.util.Random; public class HttpUtil { private final static Logger logger = LoggerFactory.getLogger(HttpUtil.class); public static ApiData HttpGet(String url, String dummyIp) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build(); httpGet.setConfig(defaultRequestConfig); httpGet.addHeader("Content-Type", "application/json;charset=UTF-8"); httpGet.addHeader("x-forwarded-for", dummyIp); CloseableHttpResponse response = null; try { response = httpClient.execute(httpGet); StatusLine statusline = response.getStatusLine(); logger.info("statusline: " + statusline); int statusCode = statusline.getStatusCode(); logger.info("statusCode: " + statusCode); org.apache.http.HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); logger.debug("result: " + result); return new ApiData(statusCode, statusline.toString(), result, null); } catch (Exception e) { return ApiData.error(e.getMessage(), e); } finally { if (response != null) response.close(); httpClient.close(); } } public static ApiData HttpPost(String url, String json, String dummyIp) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); RequestConfig defaultRequestConfig = RequestConfig.custom() .setSocketTimeout(5000) .setConnectTimeout(5000) .setConnectionRequestTimeout(5000) .build(); httpPost.setConfig(defaultRequestConfig); httpPost.addHeader("Content-Type", "application/json;charset=UTF-8"); httpPost.addHeader("x-forwarded-for", dummyIp); httpPost.setEntity(new StringEntity(json, "UTF-8")); CloseableHttpResponse response = null; try { response = httpClient.execute(httpPost); StatusLine statusline = response.getStatusLine(); logger.info("statusline: " + statusline); int statusCode = statusline.getStatusCode(); logger.info("statusCode: " + statusCode); org.apache.http.HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); logger.info("result: " + result); return new ApiData(statusCode, statusline.toString(), result, null); } catch (Exception e) { return ApiData.error(e.getMessage(), e); } finally { if (response != null) { response.close(); } httpClient.close(); } } public static void resetIp(String ip, String maskcode) throws IOException { String str1 = ip; String str2 = maskcode; String[] command1 = {"netsh", "interface", "ip", "set", "address", "name=", "Local Area Connection", "source=static", "addr=", str1, "mask=", str2}; Process pp = Runtime.getRuntime().exec(command1); } public static String GetDynamicIP() throws IOException { long randomSeed = (System.currentTimeMillis() % 254); Random random = new Random(randomSeed); int ip_pr1 = random.nextInt(254); int ip_pr2 = random.nextInt(254); int ip_pr3 = random.nextInt(254); int ip_pr4 = random.nextInt(254); String dummyIp = ip_pr1 + "." + ip_pr2 + "." + ip_pr3 + "." + ip_pr4; resetIp(dummyIp, "255.255.0.0"); return dummyIp; } public static ApiData DoGet(String url) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build(); httpGet.setConfig(defaultRequestConfig); httpGet.addHeader("Content-Type", "application/json;charset=UTF-8"); CloseableHttpResponse response = null; try { response = httpClient.execute(httpGet); StatusLine statusline = response.getStatusLine(); logger.info("statusline: " + statusline); int statusCode = statusline.getStatusCode(); logger.info("statusCode: " + statusCode); org.apache.http.HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); logger.debug("result: " + result); return new ApiData(statusCode, statusline.toString(), result, null); } catch (Exception e) { return ApiData.error(e.getMessage(), e); } finally { if (response != null) response.close(); httpClient.close(); } } public static ApiData DoPost(String url, String json) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); RequestConfig defaultRequestConfig = RequestConfig.custom() .setSocketTimeout(5000) .setConnectTimeout(5000) .setConnectionRequestTimeout(5000) .build(); httpPost.setConfig(defaultRequestConfig); httpPost.addHeader("Content-Type", "application/json;charset=UTF-8"); httpPost.setEntity(new StringEntity(json, "UTF-8")); CloseableHttpResponse response = null; try { response = httpClient.execute(httpPost); StatusLine statusline = response.getStatusLine(); logger.info("statusline: " + statusline); int statusCode = statusline.getStatusCode(); logger.info("statusCode: " + statusCode); org.apache.http.HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); logger.info("result: " + result); return new ApiData(statusCode, statusline.toString(), result, null); } catch (Exception e) { return ApiData.error(e.getMessage(), e); } finally { if (response != null) { response.close(); } httpClient.close(); } } public static String Get(String url) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000).setConnectionRequestTimeout(5000).build(); httpGet.setConfig(defaultRequestConfig); httpGet.addHeader("Content-Type", "application/json;charset=UTF-8"); CloseableHttpResponse response = null; try { response = httpClient.execute(httpGet); StatusLine statusline = response.getStatusLine(); logger.info("statusline: " + statusline); int statusCode = statusline.getStatusCode(); logger.info("statusCode: " + statusCode); org.apache.http.HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); logger.debug("result: " + result); return result; } catch (Exception e) { return null; } finally { if (response != null) response.close(); httpClient.close(); } } public static String Post(String url, String json, String Authorization) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); RequestConfig defaultRequestConfig = RequestConfig.custom() .setSocketTimeout(5000) .setConnectTimeout(5000) .setConnectionRequestTimeout(5000) .build(); httpPost.setConfig(defaultRequestConfig); httpPost.addHeader("Content-Type", "application/json;charset=UTF-8"); httpPost.addHeader("UserAgent", "faloo.com/WebRequest"); httpPost.addHeader("Accept", "application/json"); if (Authorization != null && !Authorization.isEmpty()) { httpPost.addHeader("Authorization", Authorization); } httpPost.setEntity(new StringEntity(json, "UTF-8")); CloseableHttpResponse response = null; try { response = httpClient.execute(httpPost); StatusLine statusline = response.getStatusLine(); logger.info("statusline: " + statusline); int statusCode = statusline.getStatusCode(); logger.info("statusCode: " + statusCode); org.apache.http.HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); logger.info("result: " + result); return result; } catch (Exception e) { return null; } finally { if (response != null) { response.close(); } httpClient.close(); } } public static Map getUrlQueryMap(HttpServletRequest request) { String urlQueryString = request.getQueryString(); Map queryMap = new HashMap<>(); String[] arrSplit; if (urlQueryString == null) { return queryMap; } else { //每个键值为一组 arrSplit = urlQueryString.split("[&]"); for (String strSplit : arrSplit) { String[] arrSplitEqual = strSplit.split("[=]"); //解析出键值 if (arrSplitEqual.length > 1) { queryMap.put(arrSplitEqual[0], arrSplitEqual[1]); } else { if (!"".equals(arrSplitEqual[0])) { queryMap.put(arrSplitEqual[0], ""); } } } } return queryMap; } public static String getRemoteAddr(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); } }