java 如何获取cookie
获取 Cookie 的方法
在 Java 中获取 Cookie 通常涉及 HTTP 请求和响应的处理。以下是几种常见的方法:
使用 HttpURLConnection
通过 HttpURLConnection 发送 HTTP 请求并获取响应中的 Cookie:

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;
public class CookieExample {
public static void main(String[] args) throws Exception {
URL url = new URL("https://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 发送请求
connection.setRequestMethod("GET");
connection.connect();
// 获取响应头中的 Cookie
Map<String, List<String>> headers = connection.getHeaderFields();
List<String> cookies = headers.get("Set-Cookie");
if (cookies != null) {
for (String cookie : cookies) {
System.out.println("Cookie: " + cookie);
}
}
}
}
使用 HttpClient(Java 11+)
Java 11 引入了新的 HttpClient,可以更方便地处理 HTTP 请求和 Cookie:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Optional;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
// 获取响应头中的 Cookie
Optional<String> cookie = response.headers().firstValue("Set-Cookie");
cookie.ifPresent(c -> System.out.println("Cookie: " + c));
}
}
使用第三方库(如 Apache HttpClient)
Apache HttpClient 是一个功能强大的 HTTP 客户端库,可以更灵活地处理 Cookie:
import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class ApacheHttpClientExample {
public static void main(String[] args) throws Exception {
CookieStore cookieStore = new BasicCookieStore();
CloseableHttpClient client = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();
HttpGet request = new HttpGet("https://example.com");
CloseableHttpResponse response = client.execute(request);
// 获取 CookieStore 中的 Cookie
cookieStore.getCookies().forEach(cookie -> {
System.out.println("Cookie: " + cookie.getName() + "=" + cookie.getValue());
});
response.close();
client.close();
}
}
从 Servlet 中获取 Cookie
在 Java Web 应用中,可以通过 HttpServletRequest 获取客户端发送的 Cookie:
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CookieServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
System.out.println("Cookie: " + cookie.getName() + "=" + cookie.getValue());
}
}
}
}
注意事项
- 确保正确处理 Cookie 的安全性和隐私问题。
- 某些网站可能使用
HttpOnly或Secure标志的 Cookie,这些 Cookie 无法通过 JavaScript 或非 HTTPS 连接访问。 - 使用第三方库时,注意添加相应的依赖项。
以上方法涵盖了从简单到复杂的多种场景,可以根据具体需求选择合适的方式。






