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

化工产品东莞网站建设中企动力科技股份有限公司南通分公司

化工产品东莞网站建设,中企动力科技股份有限公司南通分公司,广州网站建设模板制作,移动查询代码大全【Java】实现后端请求接口 【一】使用 HttpURLConnection 实现四种请求方式的示例【1】Get请求【2】POST请求【3】PUT请求【4】DELETE 请求【5】汇总工具类,通过传参实现4种请求 【二】HttpClient 实现四种请求方式的示例【1】GET请求【2】POST 请求【3】PUT 请求【…

【Java】实现后端请求接口

  • 【一】使用 HttpURLConnection 实现四种请求方式的示例
    • 【1】Get请求
    • 【2】POST请求
    • 【3】PUT请求
    • 【4】DELETE 请求
    • 【5】汇总工具类,通过传参实现4种请求
  • 【二】HttpClient 实现四种请求方式的示例
    • 【1】GET请求
    • 【2】POST 请求
    • 【3】PUT 请求
    • 【4】DELETE 请求
    • 【5】汇总的工具类

【一】使用 HttpURLConnection 实现四种请求方式的示例

HttpURLConnection 是 Java 标准库中较早提供的 HTTP 请求工具

【1】Get请求

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;public class HttpGetExample {public static String sendGet(String urlStr) throws Exception {// 对 URL 中的中文参数进行编码String encodedUrl = URLEncoder.encode(urlStr, "UTF-8").replaceAll("\\+", "%20");URL url = new URL(encodedUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");// 设置请求头,指定接收的字符编码connection.setRequestProperty("Accept-Charset", "UTF-8");int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {// 使用 BufferedReader 读取响应内容,并指定字符编码为 UTF-8BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}reader.close();return response.toString();}return null;}public static void main(String[] args) {try {String url = "http://example.com/api?param=中文参数";String response = sendGet(url);System.out.println(response);} catch (Exception e) {e.printStackTrace();}}
}

【2】POST请求

import java.io.DataOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;public class HttpPostExample {public static String sendPost(String urlStr, String params) throws Exception {URL url = new URL(urlStr);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");// 设置请求头,指定字符编码和内容类型connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");connection.setRequestProperty("Accept-Charset", "UTF-8");connection.setDoOutput(true);// 对请求参数进行编码String encodedParams = URLEncoder.encode(params, "UTF-8");DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());outputStream.writeBytes(encodedParams);outputStream.flush();outputStream.close();int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {// 使用 BufferedReader 读取响应内容,并指定字符编码为 UTF-8BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}reader.close();return response.toString();}return null;}public static void main(String[] args) {try {String url = "http://example.com/api";String params = "param=中文参数";String response = sendPost(url, params);System.out.println(response);} catch (Exception e) {e.printStackTrace();}}
}

【3】PUT请求

import java.io.DataOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;public class HttpPutExample {public static String sendPut(String urlStr, String params) throws Exception {URL url = new URL(urlStr);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("PUT");// 设置请求头,指定字符编码和内容类型connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");connection.setRequestProperty("Accept-Charset", "UTF-8");connection.setDoOutput(true);// 对请求参数进行编码String encodedParams = URLEncoder.encode(params, "UTF-8");DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());outputStream.writeBytes(encodedParams);outputStream.flush();outputStream.close();int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {// 使用 BufferedReader 读取响应内容,并指定字符编码为 UTF-8BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}reader.close();return response.toString();}return null;}public static void main(String[] args) {try {String url = "http://example.com/api";String params = "param=中文参数";String response = sendPut(url, params);System.out.println(response);} catch (Exception e) {e.printStackTrace();}}
}

【4】DELETE 请求

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;public class HttpDeleteExample {public static String sendDelete(String urlStr) throws Exception {// 对 URL 中的中文参数进行编码String encodedUrl = URLEncoder.encode(urlStr, "UTF-8").replaceAll("\\+", "%20");URL url = new URL(encodedUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("DELETE");// 设置请求头,指定接收的字符编码connection.setRequestProperty("Accept-Charset", "UTF-8");int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {// 使用 BufferedReader 读取响应内容,并指定字符编码为 UTF-8BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}reader.close();return response.toString();}return null;}public static void main(String[] args) {try {String url = "http://example.com/api?param=中文参数";String response = sendDelete(url);System.out.println(response);} catch (Exception e) {e.printStackTrace();}}
}

【5】汇总工具类,通过传参实现4种请求

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;public class HttpUtils {public static String sendRequest(String urlStr, String method, String params) {try {URL url;if (method.equalsIgnoreCase("GET") || method.equalsIgnoreCase("DELETE")) {if (params != null) {urlStr += "?" + URLEncoder.encode(params, "UTF-8").replaceAll("\\+", "%20");}url = new URL(urlStr);} else {url = new URL(urlStr);}HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod(method);// 设置请求头,指定字符编码和接收内容的字符编码connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");connection.setRequestProperty("Accept-Charset", "UTF-8");if (method.equalsIgnoreCase("POST") || method.equalsIgnoreCase("PUT")) {connection.setDoOutput(true);if (params != null) {String encodedParams = URLEncoder.encode(params, "UTF-8");DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());outputStream.writeBytes(encodedParams);outputStream.flush();outputStream.close();}}int responseCode = connection.getResponseCode();if (responseCode == HttpURLConnection.HTTP_OK) {// 使用 BufferedReader 读取响应内容,并指定字符编码为 UTF-8BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));StringBuilder response = new StringBuilder();String line;while ((line = reader.readLine()) != null) {response.append(line);}reader.close();return response.toString();}} catch (Exception e) {e.printStackTrace();}return null;}public static void main(String[] args) {String url = "http://example.com/api";String params = "param=中文参数";String getResponse = sendRequest(url, "GET", params);System.out.println("GET Response: " + getResponse);String postResponse = sendRequest(url, "POST", params);System.out.println("POST Response: " + postResponse);String putResponse = sendRequest(url, "PUT", params);System.out.println("PUT Response: " + putResponse);String deleteResponse = sendRequest(url + "?" + params, "DELETE", null);System.out.println("DELETE Response: " + deleteResponse);}
}

【二】HttpClient 实现四种请求方式的示例

HttpClient 是 Java 11 及以上版本引入的新的 HTTP 客户端,使用起来更加简洁和方便。

【1】GET请求

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;public class HttpClientGetExample {public static void main(String[] args) {try {// 创建 HttpClient 实例HttpClient client = HttpClient.newHttpClient();// 构建 GET 请求,指定请求 URLHttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com/api?param=中文参数")).header("Accept-Charset", "UTF-8") // 设置接收响应的字符编码为 UTF-8.GET().build();// 发送请求并获取响应,指定响应体处理方式为按 UTF-8 编码读取字符串HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println("Status code: " + response.statusCode());System.out.println("Response body: " + response.body());} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

【2】POST 请求

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;public class HttpClientPostExample {public static void main(String[] args) {try {// 构建请求体,对中文参数进行编码String param = URLEncoder.encode("中文参数", StandardCharsets.UTF_8);String requestBody = "param=" + param;// 创建 HttpClient 实例HttpClient client = HttpClient.newHttpClient();// 构建 POST 请求,设置请求头的字符编码和内容类型HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com/api")).header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").header("Accept-Charset", "UTF-8").POST(HttpRequest.BodyPublishers.ofString(requestBody)).build();// 发送请求并获取响应,指定响应体处理方式为按 UTF-8 编码读取字符串HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println("Status code: " + response.statusCode());System.out.println("Response body: " + response.body());} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

【3】PUT 请求

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;public class HttpClientPutExample {public static void main(String[] args) {try {// 构建请求体,对中文参数进行编码String param = URLEncoder.encode("中文参数", StandardCharsets.UTF_8);String requestBody = "param=" + param;// 创建 HttpClient 实例HttpClient client = HttpClient.newHttpClient();// 构建 PUT 请求,设置请求头的字符编码和内容类型HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com/api")).header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").header("Accept-Charset", "UTF-8").PUT(HttpRequest.BodyPublishers.ofString(requestBody)).build();// 发送请求并获取响应,指定响应体处理方式为按 UTF-8 编码读取字符串HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println("Status code: " + response.statusCode());System.out.println("Response body: " + response.body());} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

【4】DELETE 请求

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;public class HttpClientDeleteExample {public static void main(String[] args) {try {// 创建 HttpClient 实例HttpClient client = HttpClient.newHttpClient();// 构建 DELETE 请求,指定请求 URL 和接收响应的字符编码HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://example.com/api?param=中文参数")).header("Accept-Charset", "UTF-8").DELETE().build();// 发送请求并获取响应,指定响应体处理方式为按 UTF-8 编码读取字符串HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println("Status code: " + response.statusCode());System.out.println("Response body: " + response.body());} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

【5】汇总的工具类

HttpClientUtils 类中的 sendRequest 方法根据传入的 url、method 和 requestBody 构建相应的 HttpRequest 对象并发送请求。对于 GET 和 DELETE 请求,requestBody 可以传入 null;对于 POST 和 PUT 请求,需要传入请求体内容。在 main 方法中演示了如何调用该工具类的方法进行不同类型的请求。

(1)在请求头中设置 Accept-Charset 为 UTF-8,告诉服务器客户端期望接收的字符编码。
(2)对于 POST 和 PUT 请求,使用 URLEncoder 对请求体中的中文参数进行编码,避免发送时出现乱码。
(3)使用 HttpResponse.BodyHandlers.ofString() 接收响应体,默认以 UTF - 8 编码读取字符串。

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;public class HttpClientUtils {private static final HttpClient client = HttpClient.newHttpClient();public static String sendRequest(String url, String method, String requestBody) {try {HttpRequest.Builder requestBuilder = HttpRequest.newBuilder().uri(URI.create(url)).header("Accept-Charset", "UTF-8");switch (method.toUpperCase()) {case "GET":requestBuilder.GET();break;case "POST":if (requestBody != null) {requestBody = URLEncoder.encode(requestBody, StandardCharsets.UTF_8);}requestBuilder.header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").POST(HttpRequest.BodyPublishers.ofString(requestBody));break;case "PUT":if (requestBody != null) {requestBody = URLEncoder.encode(requestBody, StandardCharsets.UTF_8);}requestBuilder.header("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").PUT(HttpRequest.BodyPublishers.ofString(requestBody));break;case "DELETE":requestBuilder.DELETE();break;default:throw new IllegalArgumentException("Unsupported HTTP method: " + method);}HttpRequest request = requestBuilder.build();HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());return response.body();} catch (IOException | InterruptedException | IllegalArgumentException e) {e.printStackTrace();return null;}}public static void main(String[] args) {String getUrl = "https://example.com/api?param=中文参数";String postUrl = "https://example.com/api";String putUrl = "https://example.com/api";String deleteUrl = "https://example.com/api?param=中文参数";String postBody = "param=中文参数";String putBody = "param=中文参数";System.out.println("GET response: " + sendRequest(getUrl, "GET", null));System.out.println("POST response: " + sendRequest(postUrl, "POST", postBody));System.out.println("PUT response: " + sendRequest(putUrl, "PUT", putBody));System.out.println("DELETE response: " + sendRequest(deleteUrl, "DELETE", null));}
}
http://www.dtcms.com/a/451817.html

相关文章:

  • 惠州城乡住房建设厅网站平顶山 网站设计
  • 网站建设的内容商标查询天眼查
  • 京东一面首页数据庞大需要调用50+接口如何做到毫秒级响应
  • 网站收录提交建设网站用的软件
  • 光全息|单层-级联全息像的可控切换
  • 光通信|可旋转DNN赋能OAM模式可控路由
  • 【网站建设wordpress 中英
  • 拆分盘的网站开发费用北京广告制作公司
  • 做网站需要用什么开发软件现在哪个网站可以做外贸
  • 自己建网站怎么建江苏建设教育网官网入口
  • 怎么做好网站营销创建学校网站
  • 企业电子商务网站平台建设织梦网站图片代码
  • mvc6电商网站开发实战广东省阳江市网络问政平台
  • 建设银行u盾用网站打不开企业信用信息公示平台
  • 雅茂道网站建设网站建设公司 技术评估
  • 保姆给老人做爰神马网站网站建设参考文献
  • 口碑好的镇江网站建设系统优化大师免费版
  • 河北网站制作公司托管网站
  • 耒阳市网站建设应用小程序定制开发
  • 企业网站建设费计入什么科目网站建设出错1004
  • 精美手机网站模板正邦设计有限公司
  • 医院网站源码下载小程序装修页面设计
  • 企业网站制作需要多少钱软件开发工具和环境
  • 清远公司网站建设制作网站项目流程
  • 东风多利卡道路清障车做网站设置网站默认首页
  • 网站建设小程序湖南云服务器做网站镜像类型选啥
  • 国内漂亮大气的网站wordpress 支付 API
  • 制作网站平台企业建设网站 意义何在
  • 【MLLM】Qwen3-Omni全模态模型源码解读
  • 美食网站设计论文家具网站模板下载