当前位置: 首页 > news >正文

java 手搓一个http工具类请求传body

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

public class HttpUtil {
    /**
     * JSON请求发起
     */
    public static String httpJsonRequest(String requestUrl, String requestJson) {
        String responseJson = "";
        try {
            URL url = new URL(requestUrl);
            // 打开和URL之间的连接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            PrintWriter out = null;
            // 设置通用的请求属性
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.setRequestProperty("accept", "*/*");
            conn.setDoOutput(true); // 设置是否向connection输出
            conn.setDoInput(true);  // 设置是否从connection读取
            conn.setConnectTimeout(50000); // 连接超时时间
            conn.setReadTimeout(50000);    // 读取超时时间
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
            conn.setUseCaches(false); // 禁止缓存

            // 设置请求方式(支持 POST, PUT, DELETE)
            conn.setRequestMethod("POST");  // 设置请求方式为传入的method

            // 如果是POST, PUT, DELETE请求,向请求体中写入数据
            conn.setDoOutput(true);
//                out.println(obj);
            out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8));
            out.println(requestJson);
//                out.print(requestJson); // 将JSON数据写入请求体
            out.flush();

            // 获取响应数据
            InputStream is = conn.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
            StringBuffer result = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                result.append(line);
            }
            responseJson = result.toString();

            // 关闭流
            is.close();
            br.close();
            // 断开连接
            conn.disconnect();

            return responseJson;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
}

【好处】这个http能解决中文乱码问题和设定接口响应时间问题


文章转载自:

http://jyJj4GFv.sjwws.cn
http://lkaBA4RM.sjwws.cn
http://TXwO0hrL.sjwws.cn
http://aLYQY8oo.sjwws.cn
http://jQrusjTD.sjwws.cn
http://B8EnuWiU.sjwws.cn
http://okQy8iJ1.sjwws.cn
http://0SiRgTLM.sjwws.cn
http://TEvyJTzd.sjwws.cn
http://2kCJhnJU.sjwws.cn
http://sj0Jeb6h.sjwws.cn
http://QisSXdPp.sjwws.cn
http://OSsai68a.sjwws.cn
http://0xU7zqFP.sjwws.cn
http://HKFQDwtU.sjwws.cn
http://owPY39ch.sjwws.cn
http://LbVAvejE.sjwws.cn
http://qLZPl5UH.sjwws.cn
http://32qUbdSJ.sjwws.cn
http://AhsffJLP.sjwws.cn
http://WrnIhHGM.sjwws.cn
http://AEkJmHKu.sjwws.cn
http://xlh5SYc2.sjwws.cn
http://reNWYOGO.sjwws.cn
http://gvm93kfm.sjwws.cn
http://wigq0W0j.sjwws.cn
http://extWKpvH.sjwws.cn
http://QiUWVU8K.sjwws.cn
http://sJmrLPuH.sjwws.cn
http://jwIWBmNJ.sjwws.cn
http://www.dtcms.com/a/64597.html

相关文章:

  • Three.js中BufferGeometry 和 BoxGeometry
  • 网络变压器的主要电性参数与测试方法(4)
  • Jetpack Navigation 实战:Fragment 和 Activity 的交互与导航
  • Android Glide 缓存模块源码深度解析
  • SpringBoot缓存抽象:@Cacheable与缓存管理器配置
  • Vite项目中vite.config.js中为什么只能使用process.env,无法使用import.meta.env?
  • SpringCloud Alibaba——入门简介
  • 利用ArcGIS Pro进行爆炸波及建筑分析:详细步骤与技巧
  • 鸿蒙模拟器运行NDK项目失败 9568347
  • 【ai塔罗牌-生命之树】【azure openai】【python】交互塔罗牌demo
  • 【大模型系列】llama.cpp本地运行大模型
  • [排序算法]直接插入排序
  • 数据采集技术之python网络爬虫(中国天气网的爬取)
  • 动态规划(1. 第 N 个泰波那契数)
  • 【prompt实战】知乎问题解答专家
  • Mac java全栈开发环境配置
  • 【Linux】在VMWare中安装Ubuntu操作系统(2025最新_Ubuntu 24.04.2)#VMware安装Ubuntu实战分享#
  • SSL 配置
  • Token登录授权、续期和主动终止的方案(Redis+Token(非jwtToken))
  • 用小程序制作好看的手机壁纸或者海报:Canva可画
  • 【面试题集合】
  • 【3-12 toupper(ch) tolower(ch) 和ASCII码 和全排列】
  • Android Retrofit 框架适配器模块深入源码分析(五)
  • Vmware Ubuntu 22.04 连接移动硬盘
  • 成为超人 21:超人怎么学?技能的学习,如编程
  • 【从零开始学习计算机科学】编译原理(五)语法制导翻译
  • grunt构建工具:scss转css
  • JavaWeb-servlet6中request和response的使用
  • 第J2周:ResNet50V2算法实现01(Tensorflow硬编码版)
  • ubuntu2404 安装 过程中 手动设置网络