Java 获取Response的头部信息
在进行网络请求时,我们经常需要获取服务器返回的响应头部信息。Java 提供多种获取方式的方法 Response 本文将介绍一些常用的方法和示例代码。
1. HttpURLConnection在 Java 中,可使用 java.net.HttpURLConnection
类来发起 HTTP 请求并获取 Response 头部信息。以下是一个使用 HttpURLConnection
获取头部信息的示例代码:
import java.io.IOException;import java.net.HttpURLConnection;import java.net.URL;import java.util.List;import java.util.Map;public class HttpURLConnectionExample { public static void main(String[] args) throws IOException { String url = " HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setRequestMethod("GET"); // 发送请求 connection.connect(); // 获取头部信息 Map<String, List<String>> headers = connection.getHeaderFields(); // 打印头部信息 for (Map.Entry<String, List<String>> entry : headers.entrySet()) { String key = entry.getKey(); List<String> values = entry.getValue(); System.out.println(key + ": " + values); } // 断开连接 connection.disconnect(); }}
在上述代码中,我们首先创建一个代码 HttpURLConnection
对象设置请求方法 GET。然后,调用 connect
方法发送请求。之后,使用 getHeaderFields
该方法获取响应的头部信息,并返回一个方法 Map<String, List<String>>
对象,键是头部字段的名称,值是字符串列表,表示字段值。最后,我们遍历了这一点 Map 并打印头部信息。
除了 HttpURLConnection
,Java 还提供了 HttpClient
类库来发送 HTTP 请求。以下是使用 HttpClient
获取头部信息的示例代码:
import java.io.IOException;import java.util.List;import org.apache.http.Header;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.HttpClientBuilder;public class HttpClientExample { public static void main(String[] args) throws IOException { String url = " HttpGet request = new HttpGet(url); // 发送请求 HttpResponse response = HttpClientBuilder.create().build().execute(request); // 获取头部信息 Header[] headers = response.getAllHeaders(); // 打印头部信息 for (Header header : headers) { String name = header.getName(); String value = header.getValue(); System.out.println(name + ": " + value); } }}
在上述代码中,我们创建了一个代码 HttpGet
并使用请求 HttpClientBuilder
创建一个 HttpClient
对象发送请求。然后,调用 execute
该方法发送请求并获得响应。最后,使用 getAllHeaders
该方法获取头部信息,并返回一个方法 Header[]
数组,每个元素都表示一个头部字段。我们遍历这个数组,并打印头部信息。
假如你用的是 Maven 或 Gradle 通过引入施工工具,可以引入其他施工工具 Apache HttpComponents 库来获取 Response 头部信息。以下是示例代码:
import java.io.IOException;import java.util.List;import org.apache.http.Header;import org.apache.http.HttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;public class ApacheHttpComponentsExample { public static void main(String[] args) throws IOException { String url = " try (CloseableHttpClient client = HttpClients.createDefault()) { HttpGet request = new HttpGet(url); // 发送请求 HttpResponse response = client.execute(request); // 获取头部信息 Header[] headers = response.getAllHeaders(); // 打印头部信息 for (Header header : headers) { String name = header.getName(); String value = header.getValue(); System.out.println(name + ": " + value); } // 获取响应体 String body = EntityUtils.toString(response.getEntity()); System.out.println("响应体: " + body); } }}
在上述代码中,我们创建了一个代码 CloseableHttpClient
物体,并使用 HttpClients
类的 createDefault
该方法获得默认配置的客户对象。然后,我们创建了一个 HttpGet
并使用请求 client
对象的 execute
该方法发送请求并获得响应。然后,使用 getAllHeaders
获取头部信息并打印每个头部字段的方法。最重要的
