Java原生HttpURLConnection实现Get、Post、Put和Delete请求完整工具类分享

这里博主纯手写了一个完整的 HTTP 请求工具类,该工具类支持多种请求方法,包括 GETPOSTPUTDELETE,并且可以选择性地使用身份验证 token。亲测可用,大家可以直接复制并使用这段代码,以便在自己的项目中快速实现 HTTP 请求的功能。

目录

一、完整代码

二、调用示例

三、运行截图


一、完整代码

java 复制代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUtils {

    public static String doGet(String url) throws Exception {
        return doGet(url, null);
    }

    public static String doGet(String url, String token) throws Exception {
        HttpURLConnection con = createConnection(url, "GET", token);
        return handleResponse(con);
    }

    public static String doPost(String url, String params) throws IOException {
        return doPost(url, null, params);
    }

    public static String doPost(String url, String token, String params) throws IOException {
        HttpURLConnection con = createConnection(url, "POST", token);
        con.setDoOutput(true);

        // 发送 POST 请求
        try (OutputStream os = con.getOutputStream()) {
            byte[] input = params.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        return handleResponse(con);
    }

    public static String doPut(String url, String params) throws IOException {
        return doPut(url, null, params);
    }

    public static String doPut(String url, String token, String params) throws IOException {
        HttpURLConnection con = createConnection(url, "PUT", token);
        con.setDoOutput(true);

        // 发送 PUT 请求
        try (OutputStream os = con.getOutputStream()) {
            byte[] input = params.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        return handleResponse(con);
    }

    public static String doDelete(String url) throws IOException {
        return doDelete(url, null);
    }

    public static String doDelete(String url, String token) throws IOException {
        HttpURLConnection con = createConnection(url, "DELETE", token);
        return handleResponse(con);
    }

    private static HttpURLConnection createConnection(String url, String method, String token) throws IOException {
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod(method);
        con.setRequestProperty("Content-Type", "application/json; utf-8");
        con.setRequestProperty("Accept", "application/json");
        if (token != null) {
            con.setRequestProperty("Authorization", "Bearer " + token);
        }
        return con;
    }

    private static String handleResponse(HttpURLConnection con) throws IOException {
        int responseCode = con.getResponseCode();
        StringBuilder response = new StringBuilder();

        if (responseCode == HttpURLConnection.HTTP_OK) {
            try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
                String line;
                while ((line = in.readLine()) != null) {
                    response.append(line.trim());
                }
            }
            return response.toString();
        } else {
            // 读取错误信息
            try (BufferedReader errorReader = new BufferedReader(new InputStreamReader(con.getErrorStream()))) {
                StringBuilder errorResponse = new StringBuilder();
                String errorLine;
                while ((errorLine = errorReader.readLine()) != null) {
                    errorResponse.append(errorLine);
                }
                System.out.println("接口调用失败:" + errorResponse.toString());
            }
            return null;
        }
    }
}

二、调用示例

java 复制代码
import com.alibaba.fastjson.JSONObject;

public class Main {

    public static void main(String[] args) throws Exception {
        String rel = HttpUtils.doGet("http://localhost:9090/api/user/1","e5b086c7-7486-4959-b70f-84fb8970899c");
        System.out.println(rel);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id",2L);
        jsonObject.put("username","李四");
        jsonObject.put("gender","1");
        jsonObject.put("address","上海");
        String rel2 = HttpUtils.doPost("http://localhost:9090/api/user","e5b086c7-7486-4959-b70f-84fb8970899c",jsonObject.toString());
        System.out.println(rel2);
        String rel3 = HttpUtils.doPut("http://localhost:9090/api/user","e5b086c7-7486-4959-b70f-84fb8970899c",jsonObject.toString());
        System.out.println(rel3);
        String rel4 = HttpUtils.doDelete("http://localhost:9090/api/user/1","e5b086c7-7486-4959-b70f-84fb8970899c");
        System.out.println(rel4);
    }
}

三、运行截图

相关推荐
shinelord明9 分钟前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程
游客52014 分钟前
opencv中的各种滤波器简介
图像处理·人工智能·python·opencv·计算机视觉
新手小袁_J14 分钟前
JDK11下载安装和配置超详细过程
java·spring cloud·jdk·maven·mybatis·jdk11
呆呆小雅15 分钟前
C#关键字volatile
java·redis·c#
Monly2115 分钟前
Java(若依):修改Tomcat的版本
java·开发语言·tomcat
boligongzhu16 分钟前
DALSA工业相机SDK二次开发(图像采集及保存)C#版
开发语言·c#·dalsa
Eric.Lee202116 分钟前
moviepy将图片序列制作成视频并加载字幕 - python 实现
开发语言·python·音视频·moviepy·字幕视频合成·图像制作为视频
Ttang2318 分钟前
Tomcat原理(6)——tomcat完整实现
java·tomcat
7yewh19 分钟前
嵌入式Linux QT+OpenCV基于人脸识别的考勤系统 项目
linux·开发语言·arm开发·驱动开发·qt·opencv·嵌入式linux
Dontla21 分钟前
vscode怎么设置anaconda python解释器(anaconda解释器、vscode解释器)
ide·vscode·python