news 2026/2/7 5:46:19

java HttpServletRequest 设置header

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java HttpServletRequest 设置header

在Java中,可以通过多种方式设置HTTP请求的header,具体取决于你使用的是哪种HTTP客户端。以下是几种常见的方法:

1. 使用原生HttpURLConnection

import java.net.HttpURLConnection; import java.net.URL; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; public class HttpURLConnectionExample { public static void main(String[] args) throws Exception { URL url = new URL("http://example.com/api"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置请求方法 connection.setRequestMethod("POST"); // 设置请求头 connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Authorization", "Bearer token123"); connection.setRequestProperty("User-Agent", "MyApp/1.0"); connection.setRequestProperty("X-Custom-Header", "CustomValue"); // 设置连接超时 connection.setConnectTimeout(5000); connection.setReadTimeout(5000); // 发送请求体(如果是POST/PUT) connection.setDoOutput(true); String jsonInput = "{\"key\": \"value\"}"; try (OutputStream os = connection.getOutputStream()) { byte[] input = jsonInput.getBytes("utf-8"); os.write(input, 0, input.length); } // 获取响应 int responseCode = connection.getResponseCode(); System.out.println("Response Code: " + responseCode); // 读取响应 try (BufferedReader br = new BufferedReader( new InputStreamReader(connection.getInputStream(), "utf-8"))) { StringBuilder response = new StringBuilder(); String responseLine; while ((responseLine = br.readLine()) != null) { response.append(responseLine.trim()); } System.out.println("Response: " + response.toString()); } connection.disconnect(); } }

2. 使用 Apache HttpClient

首先添加依赖:

<!-- Maven --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>
import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.util.EntityUtils; public class ApacheHttpClientExample { public static void main(String[] args) throws Exception { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost httpPost = new HttpPost("http://example.com/api"); // 设置请求头 httpPost.setHeader("Content-Type", "application/json"); httpPost.setHeader("Authorization", "Bearer token123"); httpPost.setHeader("X-Custom-Header", "CustomValue"); httpPost.setHeader("User-Agent", "MyApp/1.0"); // 设置请求体 String json = "{\"key\": \"value\"}"; StringEntity entity = new StringEntity(json); httpPost.setEntity(entity); // 执行请求 try (CloseableHttpResponse response = httpClient.execute(httpPost)) { System.out.println("Status: " + response.getStatusLine()); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Response: " + responseBody); } } } }

3. 使用 Spring RestTemplate

import org.springframework.http.*; import org.springframework.web.client.RestTemplate; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import java.util.Collections; public class RestTemplateExample { public static void main(String[] args) { RestTemplate restTemplate = new RestTemplate(); // 设置请求头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("Authorization", "Bearer token123"); headers.set("X-Custom-Header", "CustomValue"); headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); // 设置请求体 String requestBody = "{\"key\": \"value\"}"; HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers); // 发送请求 ResponseEntity<String> response = restTemplate.exchange( "http://example.com/api", HttpMethod.POST, requestEntity, String.class ); System.out.println("Status: " + response.getStatusCode()); System.out.println("Response: " + response.getBody()); } }

4. 使用 OkHttp

首先添加依赖:

<!-- Maven --> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.3</version> </dependency>
import okhttp3.*; public class OkHttpExample { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); // 创建请求体 MediaType mediaType = MediaType.parse("application/json"); String json = "{\"key\": \"value\"}"; RequestBody body = RequestBody.create(mediaType, json); // 构建请求 Request request = new Request.Builder() .url("http://example.com/api") .post(body) .addHeader("Content-Type", "application/json") .addHeader("Authorization", "Bearer token123") .addHeader("X-Custom-Header", "CustomValue") .addHeader("User-Agent", "MyApp/1.0") .build(); // 发送请求 try (Response response = client.newCall(request).execute()) { System.out.println("Code: " + response.code()); System.out.println("Response: " + response.body().string()); } } }

5. 在Servlet中设置响应头

如果是在Servlet中处理HTTP请求,可以设置响应头:

import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; @WebServlet("/api") public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { // 设置响应头 response.setHeader("Content-Type", "application/json"); response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); response.setHeader("Pragma", "no-cache"); response.setHeader("Expires", "0"); response.setHeader("X-Custom-Header", "CustomValue"); // 或者使用setHeader的便捷方法 response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); // 添加多个相同名称的头 response.addHeader("Set-Cookie", "token=abc123"); response.addHeader("Set-Cookie", "session=xyz789"); // 写入响应体 response.getWriter().write("{\"status\": \"success\"}"); } }

常用HTTP头字段

头字段

说明

示例

Content-Type

请求/响应体类型

application/json

Authorization

认证信息

Bearer token123

User-Agent

客户端信息

MyApp/1.0

Accept

可接受的响应类型

application/json

Cache-Control

缓存控制

no-cache

X-Requested-With

AJAX请求标识

XMLHttpRequest

注意事项

  1. Content-Type:发送JSON数据时通常设置为application/json

  2. Authorization:用于身份验证,常见格式是Bearer token

  3. 自定义头部:通常以X-开头,但不是强制要求

  4. 字符编码:确保字符编码正确,建议使用UTF-8

  5. 敏感信息:避免在URL中传递敏感信息,应放在请求头中

选择哪种方式取决于你的项目需求:

  • 简单项目:使用HttpURLConnection

  • 需要更多功能:使用 Apache HttpClient 或 OkHttp

  • Spring项目:使用 RestTemplate

  • Servlet项目:直接使用HttpServletResponse

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 5:29:47

微信数据库密钥智能提取技术:告别繁琐操作的全新方案

微信数据库密钥智能提取技术&#xff1a;告别繁琐操作的全新方案 【免费下载链接】PyWxDump 获取微信账号信息(昵称/账号/手机/邮箱/数据库密钥/wxid)&#xff1b;PC微信数据库读取、解密脚本&#xff1b;聊天记录查看工具&#xff1b;聊天记录导出为html(包含语音图片)。支持多…

作者头像 李华
网站建设 2026/2/5 16:00:45

R3nzSkin换肤工具数据清理完全指南

R3nzSkin换肤工具数据清理完全指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL).Everyone is welcome to help improve it. 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin 当你使用R3nzSkin为英雄联盟游戏增添个性化皮肤后&#xff0…

作者头像 李华
网站建设 2026/2/7 11:08:11

完全掌控虚拟骑行:Zoffline离线服务器搭建终极指南

想要在任何网络环境下都能畅享Zwift骑行乐趣吗&#xff1f;Zoffline作为一款功能强大的开源项目&#xff0c;让你彻底摆脱网络束缚&#xff0c;打造专属的虚拟骑行世界。无论你是骑行爱好者还是技术新手&#xff0c;本文都将为你提供简单易懂的搭建方案。 【免费下载链接】zwif…

作者头像 李华
网站建设 2026/2/3 6:43:20

ImageGlass:免费开源图片浏览器,让看图体验焕然一新

ImageGlass&#xff1a;免费开源图片浏览器&#xff0c;让看图体验焕然一新 【免费下载链接】ImageGlass &#x1f3de; A lightweight, versatile image viewer 项目地址: https://gitcode.com/gh_mirrors/im/ImageGlass 还在为Windows自带的图片查看器功能单一、启动缓…

作者头像 李华
网站建设 2026/2/7 5:00:31

WorkshopDL:打破平台壁垒的Steam创意工坊下载神器

你是否曾在Epic或GOG平台购买游戏后&#xff0c;面对Steam创意工坊中琳琅满目的模组却只能望而却步&#xff1f;WorkshopDL作为一款革命性的跨平台模组下载工具&#xff0c;彻底解决了这一痛点&#xff0c;让玩家无需重复购买游戏就能享受完整的模组体验。 【免费下载链接】Wor…

作者头像 李华