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

java 复制代码
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能解决中文乱码问题和设定接口响应时间问题

相关推荐
九皇叔叔39 分钟前
Java循环结构全解析:从基础用法到性能优化
java·开发语言·性能优化
流星5211221 小时前
GC 如何判断对象该回收?从可达性分析到回收时机的关键逻辑
java·jvm·笔记·学习·算法
csdn_aspnet1 小时前
Java 圆台体积和表面积计算程序(Program for Volume and Surface area of Frustum of Cone)
java
sulikey1 小时前
Qt 入门简洁笔记:从框架概念到开发环境搭建
开发语言·前端·c++·qt·前端框架·visual studio·qt框架
zzzsde1 小时前
【C++】stack和queue:优先级队列的使用及底层原理
开发语言·c++
杯莫停丶1 小时前
设计模式之:外观模式
java·设计模式·外观模式
乐之者v1 小时前
Mac常用软件
java·1024程序员节
TDengine (老段)1 小时前
TDengine 数据函数 ROUND 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·1024程序员节
TDengine (老段)1 小时前
TDengine 数学函数 RAND 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
從南走到北1 小时前
JAVA无人自助共享系统台球室源码自助开台约球交友系统源码小程序
java·微信·微信小程序·小程序·1024程序员节