Java开发中请求头的概念与写法代码示例

 更新时间:2025年12月15日 16:03:14   作者:Filotimo_  
本文介绍了Java开发中请求头(RequestHeaders)的用途、组成和常见字段,并提供了使用HttpURLConnection、HttpClient(Java11及以上)和ApacheHttpClient发送带有请求头的HTTP请求的代码示例,感兴趣的朋友跟随小编一起看看吧

在 Java 开发中,请求头(Request Headers)是 HTTP 请求的一部分,用于在客户端和服务器之间传递额外的信息。

请求头是什么

HTTP 请求由请求行、请求头、空行和请求体组成。请求头是一系列键值对,每个键值对之间用冒号分隔,用于提供关于请求的元数据,例如请求的来源、客户端支持的内容类型、缓存策略等。常见的请求头字段有:

  • User - Agent:标识客户端的类型和版本,如浏览器类型、操作系统等。
  • Content - Type:指定请求体的 MIME 类型,如 application/jsonapplication/x-www-form-urlencoded 等。
  • Accept:告诉服务器客户端能够接受的响应内容类型。
  • Authorization:用于传递身份验证信息,如令牌(Token)。

如何使用请求头

请求头的使用场景非常广泛,例如:

  • 身份验证:通过 Authorization 请求头传递令牌,实现用户身份验证。
  • 数据格式指定:使用 Content - Type 和 Accept 请求头指定请求和响应的数据格式。
  • 缓存控制:通过 Cache - Control 请求头控制缓存策略。

编写请求头的代码示例

1. 使用HttpURLConnection

HttpURLConnection 是 Java 标准库中用于发送 HTTP 请求的类,以下是一个添加请求头并发送 GET 请求的示例:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpURLConnectionExample {
    public static void main(String[] args) throws IOException {
        // 创建 URL 对象
        URL url = new URL("https://example.com");
        // 打开连接
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        // 设置请求方法为 GET
        connection.setRequestMethod("GET");
        // 添加请求头
        connection.setRequestProperty("User-Agent", "Mozilla/5.0");
        connection.setRequestProperty("Accept", "application/json");
        // 获取响应状态码
        int responseCode = connection.getResponseCode();
        System.out.println("Response Code: " + responseCode);
        // 读取响应内容
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        StringBuilder response = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();
        // 输出响应内容
        System.out.println("Response Body: " + response.toString());
        // 关闭连接
        connection.disconnect();
    }
}

在上述代码中,通过 setRequestProperty 方法添加了 User - Agent 和 Accept 请求头。

2. 使用HttpClient(Java 11 及以上)

Java 11 引入了新的 HttpClient 类,它提供了更简洁和强大的 HTTP 客户端功能,以下是一个使用 HttpClient 添加请求头并发送 POST 请求的示例:

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 HttpClientExample {
    public static void main(String[] args) throws IOException, InterruptedException {
        // 创建 HttpClient 实例
        HttpClient client = HttpClient.newHttpClient();
        // 创建 HttpRequest 并添加请求头
        HttpRequest request = HttpRequest.newBuilder()
               .uri(URI.create("https://example.com"))
               .header("Content-Type", "application/json")
               .header("Authorization", "Bearer your_token")
               .POST(HttpRequest.BodyPublishers.ofString("{\"key\": \"value\"}"))
               .build();
        // 发送请求并获取响应
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        // 输出响应状态码和内容
        System.out.println("Response Code: " + response.statusCode());
        System.out.println("Response Body: " + response.body());
    }
}

在上述代码中,通过 header 方法添加了 Content - Type 和 Authorization 请求头。

3. 使用第三方库(如 Apache HttpClient)

Apache HttpClient 是一个流行的第三方 HTTP 客户端库,以下是一个使用 Apache HttpClient 添加请求头并发送 GET 请求的示例:

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class ApacheHttpClientExample {
    public static void main(String[] args) throws IOException {
        // 创建 HttpClient 实例
        HttpClient client = HttpClients.createDefault();
        // 创建 HttpGet 请求
        HttpGet request = new HttpGet("https://example.com");
        // 添加请求头
        request.addHeader("User-Agent", "MyApp/1.0");
        request.addHeader("Accept", "text/html");
        // 执行请求
        HttpResponse response = client.execute(request);
        // 输出响应状态码和内容
        System.out.println("Response Code: " + response.getStatusLine().getStatusCode());
        System.out.println("Response Body: " + EntityUtils.toString(response.getEntity()));
    }
}

在上述代码中,通过 addHeader 方法添加了 User - Agent 和 Accept 请求头。

到此这篇关于Java开发中请求头的概念与写法代码示例的文章就介绍到这了,更多相关java请求头写法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用java+mysql递归实现拼接树形JSON列表的方法示例

    利用java+mysql递归实现拼接树形JSON列表的方法示例

    这篇文章主要给大家介绍了关于利用java+mysql递归实现拼接树形JSON列表的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
    2017-08-08
  • 简单了解Spring Bean常用注解的装配

    简单了解Spring Bean常用注解的装配

    这篇文章主要介绍了简单了解Spring Bean常用注解的装配,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java中JDBC事务与JTA分布式事务总结与区别

    Java中JDBC事务与JTA分布式事务总结与区别

    Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务,本文详细介绍了JDBC事务与JTA分布式事务,有需要的可以了解一下。
    2016-11-11
  • 教你安装eclipse2021并配置内网maven中心仓库的图文详解

    教你安装eclipse2021并配置内网maven中心仓库的图文详解

    本文能通过图文并茂的形式给大家介绍安装eclipse2021并配置内网maven中心仓库的相关知识,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-09-09
  • java版十大排序经典算法:完整代码(4)

    java版十大排序经典算法:完整代码(4)

    优秀的文章也不少,但是Java完整版的好像不多,我把所有的写一遍巩固下,同时也真诚的希望阅读到这篇文章的小伙伴们可以自己去从头敲一遍,不要粘贴复制!希望我的文章对你有所帮助,每天进步一点点
    2021-07-07
  • 使用Java继承高频陷阱解读

    使用Java继承高频陷阱解读

    本文分析Java编程中六大常见陷阱,包括伪继承、父类脆弱性、构造方法异常、里氏替换原则、静态初始化问题及继承复用误区,强调组合优于继承,通过线程池、模板方法、工厂模式等实现安全、灵活的代码设计
    2025-08-08
  • java下使用kaptcha生成验证码

    java下使用kaptcha生成验证码

    这篇文章主要介绍了java下使用kaptcha生成验证码,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • java中String StringBuffer和StringBuilder的区别详解

    java中String StringBuffer和StringBuilder的区别详解

    大家好,本篇文章主要讲的是java中String StringBuffer和StringBuilder的区别详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • java中的过滤器 Filter应用小结

    java中的过滤器 Filter应用小结

    文章主要介绍了Java Web中的过滤器(Filter)的基本概念、生命周期、配置和应用,过滤器可以拦截请求和响应,用于执行一些预处理或后处理操作,如设置编码、校验用户身份等,感兴趣的朋友一起看看吧
    2025-03-03
  • Transactional注解导致Spring Bean定时任务失效的解决方法

    Transactional注解导致Spring Bean定时任务失效的解决方法

    这篇文章主要介绍了Transactional注解导致Spring Bean定时任务失效的解决方法,文中通过代码示例介绍的非常详细,对大家解决问题有一定的帮助,需要的朋友可以参考下
    2024-10-10

最新评论