这里博主纯手写了一个完整的 HTTP 请求工具类,该工具类支持多种请求方法,包括
GET
、POST
、PUT
和DELETE
,并且可以选择性地使用身份验证 token。亲测可用,大家可以直接复制并使用这段代码,以便在自己的项目中快速实现 HTTP 请求的功能。
目录
一、完整代码
二、调用示例
三、运行截图
一、完整代码
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;}}
}
二、调用示例
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);}
}