不多BB ,代码直接粘贴可用
import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSession; import com.alibaba.fastjson.JSONObject; /** * Http请求 * @author mszhou * */ public class HttpsUtils { private static final int TIMEOUT = 45000; public static final String ENCODING = "UTF-8"; /** * 创建HTTP连接 * * @param url * 地址 * @param method * 方法 * @param headerParameters * 头信息 * @param body * 请求内容 * @return * @throws Exception */ private static HttpURLConnection createConnection(String url, String method, Map<String, String> headerParameters, String body) throws Exception { URL Url = new URL(url); trustAllHttpsCertificates(); HttpURLConnection httpConnection = (HttpURLConnection) Url .openConnection(); // 设置请求时间 httpConnection.setConnectTimeout(TIMEOUT); // 设置 header if (headerParameters != null) { Iterator<String> iteratorHeader = headerParameters.keySet() .iterator(); while (iteratorHeader.hasNext()) { String key = iteratorHeader.next(); httpConnection.setRequestProperty(key, headerParameters.get(key)); } } httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + ENCODING); // 设置请求方法 httpConnection.setRequestMethod(method); httpConnection.setDoOutput(true); httpConnection.setDoInput(true); // 写query数据流 if (!(body == null || body.trim().equals(""))) { OutputStream writer = httpConnection.getOutputStream(); try { writer.write(body.getBytes(ENCODING)); } finally { if (writer != null) { writer.flush(); writer.close(); } } } // 请求结果 int responseCode = httpConnection.getResponseCode(); if (responseCode != 200) { throw new Exception(responseCode + ":" + inputStream2String(httpConnection.getErrorStream(), ENCODING)); } return httpConnection; } /** * POST请求 * @param address 请求地址 * @param headerParameters 参数 * @param body * @return * @throws Exception */ public static String post(String address, Map<String, String> headerParameters, String body) throws Exception { return proxyHttpRequest(address, "POST", null, getRequestBody(headerParameters)); } /** * GET请求 * @param address * @param headerParameters * @param body * @return * @throws Exception */ public static String get(String address, Map<String, String> headerParameters, String body) throws Exception { return proxyHttpRequest(address + "?" + getRequestBody(headerParameters), "GET", null, null); } /** * 读取网络文件 * @param address * @param headerParameters * @param body * @param file * @return * @throws Exception */ public static String getFile(String address, Map<String, String> headerParameters, File file) throws Exception { String result = "fail"; HttpURLConnection httpConnection = null; try { httpConnection = createConnection(address, "POST", null, getRequestBody(headerParameters)); result = readInputStream(httpConnection.getInputStream(), file); } catch (Exception e) { throw e; } finally { if (httpConnection != null) { httpConnection.disconnect(); } } return result; } public static byte[] getFileByte(String address, Map<String, String> headerParameters) throws Exception { byte[] result = null; HttpURLConnection httpConnection = null; try { httpConnection = createConnection(address, "POST", null, getRequestBody(headerParameters)); result = readInputStreamToByte(httpConnection.getInputStream()); } catch (Exception e) { throw e; } finally { if (httpConnection != null) { httpConnection.disconnect(); } } return result; } /** * 读取文件流 * @param in * @return * @throws Exception */ public static String readInputStream(InputStream in, File file) throws Exception { FileOutputStream out = null; ByteArrayOutputStream output = null; try { output = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) != -1) { output.write(buffer, 0, len); } out = new FileOutputStream(file); out.write(output.toByteArray()); } catch (Exception e) { throw e; } finally { if (output != null) { output.close(); } if (out != null) { out.close(); } } return "success"; } public static byte[] readInputStreamToByte(InputStream in) throws Exception { FileOutputStream out = null; ByteArrayOutputStream output = null; byte[] byteFile = null; try { output = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) != -1) { output.write(buffer, 0, len); } byteFile = output.toByteArray(); } catch (Exception e) { throw e; } finally { if (output != null) { output.close(); } if (out != null) { out.close(); } } return byteFile; } /** * HTTP请求 * * @param address * 地址 * @param method * 方法 * @param headerParameters * 头信息 * @param body * 请求内容 * @return * @throws Exception */ public static String proxyHttpRequest(String address, String method, Map<String, String> headerParameters, String body) throws Exception { String result = null; HttpURLConnection httpConnection = null; try { httpConnection = createConnection(address, method, headerParameters, body); String encoding = "UTF-8"; if (httpConnection.getContentType() != null && httpConnection.getContentType().indexOf("charset=") >= 0) { encoding = httpConnection.getContentType() .substring( httpConnection.getContentType().indexOf( "charset=") + 8); } result = inputStream2String(httpConnection.getInputStream(), encoding); // logger.info("HTTPproxy response: {},{}", address, // result.toString()); } catch (Exception e) { // logger.info("HTTPproxy error: {}", e.getMessage()); throw e; } finally { if (httpConnection != null) { httpConnection.disconnect(); } } return result; } /** * 将参数化为 body * @param params * @return */ public static String getRequestBody(Map<String, String> params) { return getRequestBody(params, true); } /** * 将参数化为 body * @param params * @return */ public static String getRequestBody(Map<String, String> params, boolean urlEncode) { StringBuilder body = new StringBuilder(); Iterator<String> iteratorHeader = params.keySet().iterator(); while (iteratorHeader.hasNext()) { String key = iteratorHeader.next(); String value = params.get(key); if (urlEncode) { try { body.append(key + "=" + URLEncoder.encode(value, ENCODING) + "&"); } catch (UnsupportedEncodingException e) { // e.printStackTrace(); } } else { body.append(key + "=" + value + "&"); } } if (body.length() == 0) { return ""; } return body.substring(0, body.length() - 1); } /** * 读取inputStream 到 string * @param input * @param encoding * @return * @throws IOException */ private static String inputStream2String(InputStream input, String encoding) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(input, encoding)); StringBuilder result = new StringBuilder(); String temp = null; while ((temp = reader.readLine()) != null) { result.append(temp); } return result.toString(); } /** * 设置 https 请求 * @throws Exception */ private static void trustAllHttpsCertificates() throws Exception { HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { public boolean verify(String str, SSLSession session) { return true; } }); javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1]; javax.net.ssl.TrustManager tm = new miTM(); trustAllCerts[0] = tm; javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext .getInstance("SSL"); sc.init(null, trustAllCerts, null); javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc .getSocketFactory()); } //设置 https 请求证书 static class miTM implements javax.net.ssl.TrustManager,javax.net.ssl.X509TrustManager { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public boolean isServerTrusted( java.security.cert.X509Certificate[] certs) { return true; } public boolean isClientTrusted( java.security.cert.X509Certificate[] certs) { return true; } public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) throws java.security.cert.CertificateException { return; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) throws java.security.cert.CertificateException { return; } } //==================================================================== //============================= 测试调用 ============================ //==================================================================== public static void main(String[] args) { try { //请求地址(我这里测试使用淘宝提供的手机号码信息查询的接口) String address = "https://192.168.13.81:8443/hound-api/api/v1/acc/auth/api/elastic/save_indexName"; //请求参数 Map<String, String> params = new HashMap<String, String>(); params.put("indexName", "ppppsss");//这是该接口需要的参数 params.put("userId", "317");//这是该接口需要的参数 // 调用 get 请求 String res = get(address, params, null); System.out.println(res);//打印返回参数 res = res.substring(res.indexOf("{"));//截取 JSONObject result = JSONObject.parseObject(res);//转JSON System.out.println(result.toString());//打印 } catch (Exception e) { // TODO 异常 e.printStackTrace(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)