java功能-发送http请求
一、发送json
public void test() throws IOException { //参数封装------------------------------------------------------ Map<String, Object> jsonMap = new HashMap<String, Object>(); Map<String, Object> params1 = new HashMap<String, Object>(); List<Object> params2=new ArrayList<>(); //封装params1 //封装params2 //封装jsonMap jsonMap.put("sendBasic", params1); jsonMap.put("toUsers", params2); String json = JSON.toJSONString(jsonMap); //---建立连接--------------------------------------------------------------- URL url = new URL("http://");//请求的路径 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); // 设置可输入 connection.setDoOutput(true); // 设置该连接是可以输出的 connection.setRequestMethod("POST");// 设置请求方式 connection.setRequestProperty("Charset", "UTF-8"); connection.setRequestProperty("Accept-Charset", "utf-8"); connection.setRequestProperty("Content-Type", "application/json;charset=utf-8"); //发送参数--------------------------------------------------------------------------- BufferedOutputStream pw = new BufferedOutputStream(connection.getOutputStream()); //发送内容转码utf-8 **必写** pw.write(json.getBytes("UTF-8")); pw.flush(); pw.close(); //读取响应数据--------------------------------------------------------------------------- //输入流转码utf-8 **必写** BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String line = null; StringBuilder result = new StringBuilder(); while ((line = br.readLine()) != null) { // 读取数据 result.append(line + "\n"); } }
httpUtil工具类
import java.io.*; import java.net.*; import javax.net.ssl.HttpsURLConnection; import javax.servlet.http.HttpServletRequest; /** * http请求工具类 * */ public class HttpUtil2 { /** * @Description * @Date 15:36 2022-10-13 * @Param String url * @Param boolean isSSL * @Param int timeout * @return java.net.URLConnection */ private static URLConnection getConn(String url, boolean isSSL,int timeout){ URL realUrl = null; URLConnection connection = null; try { realUrl = new URL(url); realUrl.openConnection();// 打开和URL之间的连接 // 开发环境打开和URL之间的连接 // Proxy proxy1 = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("代理ip", 80)); //设置代理 // URLConnection connection = realUrl.openConnection(proxy1);// 打开和URL之间的连接 if (isSSL) { connection = (HttpsURLConnection) connection; } // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.setConnectTimeout(timeout);//连接失效时间 1s connection.connect(); } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } return connection; } public static String get(String url){ return get(url,false); } /** * 发送get请求 * @param url 链接地址 * @param isSSL 是否是https协议 * @return 返回响应字符串 */ public static String get(String url, boolean isSSL) { String result = ""; BufferedReader in = null; try { URLConnection connection = getConn(url, false, 1000); // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); } finally { // 使用finally块来关闭输入流 try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } /** * 发送get请求 * @param url 链接地址 * @param localPath 保存到本地的全路径 * @param isSSL 是否是https协议 * @return 返回响应字符串 */ public static String getPic(String url, String localPath,boolean isSSL) { String result = ""; BufferedReader in = null; try { URLConnection connection = getConn(url, false, 1000); InputStream inputStream = connection.getInputStream(); OutputStream outputStream = new FileOutputStream(localPath); byte[] buffer = new byte[1024]; //每次读取的字符串长度,如果为-1,代表全部读取完毕 int len = 0; //使用一个输入流从buffer里把数据读取出来 while( (len=inputStream.read(buffer)) != -1 ){ outputStream.write(buffer,0,len); } // 关闭输出流 inputStream.close(); outputStream.close(); } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); } finally { // 使用finally块来关闭输入流 try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } /** * 发送post请求 * @param reqUrl * @param params * @param isSSL * @return */ public static String post(String reqUrl, String params, boolean isSSL) { HttpURLConnection connection = null; String responseContent = null; try { URL url = new URL(reqUrl); connection = (HttpURLConnection) url.openConnection(); if (isSSL) { connection = (HttpsURLConnection) connection; } connection.setRequestMethod("POST"); connection.setConnectTimeout(1000); connection.setDoOutput(true); connection.setDoOutput(true); connection.setUseCaches(false); connection.connect(); OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "utf-8"); osw.write(params); osw.flush(); osw.close(); InputStream in = connection.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(in)); String tempLine = rd.readLine(); StringBuffer tempStr = new StringBuffer(); String crlf=System.getProperty("line.separator"); while (tempLine != null) { tempStr.append(tempLine); tempStr.append(crlf); tempLine = rd.readLine(); } responseContent = tempStr.toString(); rd.close(); in.close(); } catch (IOException e) { System.out.println("发送POST请求出现异常!" + e); } finally { if (connection != null) { connection.disconnect(); } } return responseContent; } /** * 获取http请求体 * @param request * @return * @throws IOException */ public static String getHttpBody(HttpServletRequest request) throws IOException{ BufferedReader br = request.getReader(); String str, wholeStr = ""; while((str = br.readLine()) != null){ wholeStr += str; } return wholeStr; } public static void main(String[] args) { } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律