| | |
| | | package com.doumee.core.utils; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.http.HttpEntity; |
| | | import org.apache.http.ParseException; |
| | | import org.apache.http.auth.AuthScope; |
| | | import org.apache.http.auth.UsernamePasswordCredentials; |
| | | import org.apache.http.client.ClientProtocolException; |
| | | import org.apache.http.client.CredentialsProvider; |
| | | import org.apache.http.client.config.RequestConfig; |
| | | import org.apache.http.client.methods.CloseableHttpResponse; |
| | | import org.apache.http.client.methods.HttpDelete; |
| | | import org.apache.http.client.methods.HttpPost; |
| | | import org.apache.http.client.methods.HttpRequestBase; |
| | | import org.apache.http.entity.StringEntity; |
| | | import org.apache.http.impl.client.BasicCredentialsProvider; |
| | | import org.apache.http.impl.client.CloseableHttpClient; |
| | | import org.apache.http.impl.client.HttpClients; |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.http.HttpMethod; |
| | | |
| | | import javax.net.ssl.*; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.io.*; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URI; |
| | | import java.net.URL; |
| | | import java.security.KeyManagementException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.security.SecureRandom; |
| | | import java.security.cert.CertificateException; |
| | | import java.security.cert.X509Certificate; |
| | | |
| | | @Slf4j |
| | | public class HttpsUtil { |
| | | |
| | | public static String get(String url,boolean ignoreSSL) { |
| | |
| | | }else{ |
| | | return connectionHttp(url, "POST", data, "application/json"); |
| | | } |
| | | } |
| | | private static final int CONNECT_TIMEOUT =10000;// 设置连接建立的超时时间为10s |
| | | private static final int SOCKET_TIMEOUT = 10000;//socket读写超时时间(单位毫秒) |
| | | |
| | | private static void setRequestConfig(HttpRequestBase httpRequestBase) { |
| | | RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(CONNECT_TIMEOUT) |
| | | .setConnectTimeout(CONNECT_TIMEOUT).setSocketTimeout(SOCKET_TIMEOUT).build(); |
| | | httpRequestBase.setConfig(requestConfig); |
| | | } |
| | | |
| | | public static String doPostHk(String host,int port,String UserName,String Password,String url, String Input) { |
| | | try { |
| | | CloseableHttpResponse responseBody = null; |
| | | HttpPost httpPost = new HttpPost("http://"+host+":"+port+url); |
| | | setRequestConfig(httpPost); |
| | | httpPost.setEntity(new StringEntity(Input, "UTF-8")); |
| | | CredentialsProvider credsProvider = new BasicCredentialsProvider(); |
| | | credsProvider.setCredentials(new AuthScope(host, port), |
| | | new UsernamePasswordCredentials(UserName, Password)); |
| | | CloseableHttpClient httpClient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build(); |
| | | |
| | | String response = ""; |
| | | |
| | | // 由客户端执行(发送)Post请求 |
| | | responseBody = httpClient.execute(httpPost); |
| | | // 从响应模型中获取响应实体 |
| | | HttpEntity responseEntity = responseBody.getEntity(); |
| | | log.error("doPostHk响应状态为:" + responseBody.getStatusLine()); |
| | | if (responseBody.getStatusLine().getStatusCode() == 302){ |
| | | String redirectLocation = responseBody.getHeaders("Location")[0].getValue(); |
| | | log.error("doPostHkRedirected to: " + redirectLocation); |
| | | // 在这里,你可以发送一个新的请求到redirectLocation |
| | | httpPost.setURI(URI.create(redirectLocation)); |
| | | CloseableHttpResponse responseBody2 = httpClient.execute(httpPost); |
| | | log.error("doPostHk重定向后响应状态为:" + responseBody2.getStatusLine()); |
| | | HttpEntity responseEntity2 = responseBody2.getEntity(); |
| | | log.error("doPostHk重定向后响应内容长度为:" + responseEntity2.getContentLength()); |
| | | response = EntityUtils.toString(responseEntity2); |
| | | log.error("doPostHk重定向后响应内容为:\n" + response); |
| | | responseBody2.close(); |
| | | return response; |
| | | }else { |
| | | if (responseEntity != null) { |
| | | log.error("doPostHk响应内容长度为:" + responseEntity.getContentLength()); |
| | | response = EntityUtils.toString(responseEntity); |
| | | log.error("doPostHk响应内容为:\n" + response); |
| | | return response; |
| | | } |
| | | } |
| | | if (httpClient != null) { |
| | | httpClient.close(); |
| | | } |
| | | if (responseBody != null) { |
| | | responseBody.close(); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("doPostHk发起请求异常:\n" + e.getMessage()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL){ |
| | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | if(connection != null){ |
| | | connection.disconnect(); |
| | | } |
| | | // if(connection != null){ |
| | | // connection.disconnect(); |
| | | // } |
| | | |
| | | } |
| | | return null; |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | | public static void main(String[] args) throws IOException { |
| | | //局部信任所有证书和主机 |
| | | String result = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do",true); |
| | | System.out.println(result); |
| | | |
| | | //外部信任所有证书和主机 |
| | | HttpsTrustManager.allowAllSSL(); |
| | | String response = HttpsUtil.get("https://127.0.0.1:8443/ssl-test/test01.do", false); |
| | | System.out.println(result); |
| | | |
| | | InputStream result = HttpsUtil.connectionInputsteam( |
| | | "https://atwl.ahzyssl.com/zhyq_ftp/company_documents/20250630/e4205bc2-c5d3-48c7-ae2e-9690c009e481.txt", |
| | | "GET",null,null ); |
| | | try (BufferedInputStream bufferedInputStream = new BufferedInputStream(result); |
| | | FileOutputStream outputStream = new FileOutputStream("D://temp.txt")) { |
| | | byte[] buffer = new byte[1024]; |
| | | int bytesRead; |
| | | while ((bytesRead = bufferedInputStream.read(buffer)) != -1) { |
| | | outputStream.write(buffer, 0, bytesRead); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |