From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:22:45 +0800
Subject: [PATCH] 描述
---
src/main/java/com/gk/firework/Domain/Utils/HttpUtils.java | 199 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 199 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/gk/firework/Domain/Utils/HttpUtils.java b/src/main/java/com/gk/firework/Domain/Utils/HttpUtils.java
new file mode 100644
index 0000000..d341c81
--- /dev/null
+++ b/src/main/java/com/gk/firework/Domain/Utils/HttpUtils.java
@@ -0,0 +1,199 @@
+package com.gk.firework.Domain.Utils;
+
+import org.apache.http.Header;
+import org.apache.http.HttpStatus;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+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.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.Map;
+
+public class HttpUtils {
+ private static final Logger logger = LogManager.getLogger(HttpUtils.class);
+
+ public static final String DEF_CHATSET = "UTF-8";
+ public static final int DEF_CONN_TIMEOUT = 30000;
+ public static final int DEF_READ_TIMEOUT = 30000;
+ public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29";
+ /**
+ *
+ * @param strUrl 请求地址
+ * @param params 请求参数
+ * @param method 请求方法
+ * @return 网络请求字符串
+ * @throws Exception
+ */
+ public static String net(String strUrl, Map params, String method) throws Exception {
+ HttpURLConnection conn = null;
+ BufferedReader reader = null;
+ String rs = null;
+ try {
+ StringBuffer sb = new StringBuffer();
+ if(method==null || method.equals("GET")){
+ strUrl = strUrl+"?"+urlencode(params);
+ }
+ URL url = new URL(strUrl);
+ conn = (HttpURLConnection) url.openConnection();
+ if(method==null || method.equals("GET")){
+ conn.setRequestMethod("GET");
+ }else{
+ conn.setRequestMethod("POST");
+ conn.setDoOutput(true);
+ }
+ conn.setRequestProperty("User-agent", userAgent);
+ conn.setUseCaches(false);
+ conn.setConnectTimeout(DEF_CONN_TIMEOUT);
+ conn.setReadTimeout(DEF_READ_TIMEOUT);
+ conn.setInstanceFollowRedirects(false);
+ conn.connect();
+ if (params!= null && method.equals("POST")) {
+ try {
+ DataOutputStream out = new DataOutputStream(conn.getOutputStream());
+ out.writeBytes(urlencode(params));
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ }
+ InputStream is = conn.getInputStream();
+ reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));
+ String strRead = null;
+ while ((strRead = reader.readLine()) != null) {
+ sb.append(strRead);
+ }
+ rs = sb.toString();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ if (reader != null) {
+ reader.close();
+ }
+ if (conn != null) {
+ conn.disconnect();
+ }
+ }
+ return rs;
+ }
+
+ //将map型转为请求参数型
+ public static String urlencode(Map<String,Object>data) {
+ StringBuilder sb = new StringBuilder();
+ for (Map.Entry i : data.entrySet()) {
+ try {
+ sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ }
+ return sb.toString();
+ }
+
+ //post json
+// public static String sendPost(String url, String data) {
+// String response = null;
+// try {
+// HttpClient httpclient = null;
+// HttpResponse httpresponse = null;
+// HttpPost httppost = null;
+//
+// try {
+// httpclient = HttpClients.createDefault();
+// httppost = new HttpPost(url);
+// StringEntity stringentity = new StringEntity(data,
+// ContentType.create("application/json", "UTF-8"));
+// httppost.setEntity(stringentity);
+// httpresponse = httpclient.execute(httppost);
+// response = EntityUtils
+// .toString(httpresponse.getEntity());
+// // 检验返回码
+// int statusCode = httpresponse.getStatusLine().getStatusCode();
+// if(statusCode != HttpStatus.SC_OK){
+// logger.error("请求出错: "+statusCode);
+// if (statusCode == 307) {
+// Header header = httpresponse.getFirstHeader("location"); // 跳转的目标地址是在 HTTP-HEAD上
+// String newuri = header.getValue(); // 这就是跳转后的地址,再向这个地址发出新申请
+// logger.error(newuri);
+//
+// httppost = new HttpPost(newuri);
+// StringEntity newstringentity = new StringEntity(data,
+// ContentType.create("application/json", "UTF-8"));
+// httppost.setEntity(newstringentity);
+// httpresponse = httpclient.execute(httppost);
+// response = EntityUtils
+// .toString(httpresponse.getEntity());
+//
+// logger.error("请求出错: "+httpresponse.getStatusLine().getStatusCode());
+// }
+//
+// }
+// } catch (Exception e){
+// e.printStackTrace();
+// }finally {
+// if(httppost != null){
+// try {
+// httppost.releaseConnection();
+// Thread.sleep(500);
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// }
+// }
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// return response;
+// }
+
+ public static String sendPost(String url, String data) {
+ String resData = null;
+ try {
+ RequestConfig config = RequestConfig.custom().setRedirectsEnabled(false).build();//不允许重定向
+ CloseableHttpClient client = HttpClients.custom().setDefaultRequestConfig(config).build();
+
+// CloseableHttpClient client = HttpClients.createDefault();
+ HttpPost post = new HttpPost(url);
+ post.setHeader("Content-Type", "application/json;charset=UTF-8");
+ StringEntity se = new StringEntity(data, "UTF-8");
+ se.setContentEncoding("UTF-8");
+ se.setContentType("application/json");
+ post.setEntity(se);
+ CloseableHttpResponse response = client.execute(post);
+ resData = EntityUtils.toString(response.getEntity());
+ // 检验返回码
+ int statusCode = response.getStatusLine().getStatusCode();
+ if(statusCode != HttpStatus.SC_OK){
+ logger.error("请求出错: "+statusCode);
+ if (statusCode == 307) {
+ Header header = response.getFirstHeader("Location"); // 跳转的目标地址是在 HTTP-HEAD上
+ String newuri = header.getValue(); // 这就是跳转后的地址,再向这个地址发出新申请
+ logger.error(newuri);
+
+ post = new HttpPost(newuri);
+ StringEntity newstringentity = new StringEntity(data,
+ ContentType.create("application/json", "UTF-8"));
+ post.setEntity(newstringentity);
+ response = client.execute(post);
+ resData = EntityUtils.toString(response.getEntity());
+ logger.error("请求出错: "+response.getStatusLine().getStatusCode());
+ }
+ }
+ client.close();
+ logger.info(resData);
+ } catch (Exception e) {
+ logger.error(e.getMessage(), e);
+ }
+ return resData;
+ }
+
+
+}
--
Gitblit v1.9.2