From f65443d8abeaedc9d102324565e8368e7c9d90c8 Mon Sep 17 00:00:00 2001 From: 郑永安 <zyazyz250@sina.com> Date: 星期一, 19 六月 2023 14:41:54 +0800 Subject: [PATCH] commit --- 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