Java 获取返回的响应头
在进行网络请求时,我们通常需要获取服务端返回的响应头信息。Java 提供了多种方式来获取响应头,本文将为您介绍其中常用的几种方法。
HttpURLConnection
Java 的标准库中提供了 java.net.HttpURLConnection
类来进行网络请求。下面是一个示例代码,展示了如何使用 HttpURLConnection 发起 GET 请求并获取响应头信息:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
public class HttpURLConnectionExample {
public static void main(String[] args) throws Exception {
String url = "
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
System.out.println("Response Code: " + responseCode);
Map<String,java.util.List<String>> headers = con.getHeaderFields();
System.out.println("Response Headers:");
for (Map.Entry<String, java.util.List<String>> entry : headers.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder content = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
System.out.println("Response Body: " + content.toString());
}
}
在上述代码中,我们首先创建了一个 URL 对象来表示请求的地址。然后通过 openConnection
方法打开一个连接,返回的是 HttpURLConnection
对象。通过调用 setRequestMethod
方法设置请求方法为 GET。使用 getResponseCode
方法可以获取响应的状态码,而 getHeaderFields
方法可以获取所有的响应头信息,返回的是一个 Map
对象。我们可以遍历这个 Map
对象,分别获取每个响应头的键和值。最后,我们还可以获取响应体的内容。
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.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
public class ApacheHttpClientExample {
public static void main(String[] args) throws Exception {
String url = "
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);
System.out.println("Response Code: " + response.getStatusLine().getStatusCode());
System.out.println("Response Headers:");
for (org.apache.http.Header header : response.getAllHeaders()) {
System.out.println(header.getName() + ": " + header.getValue());
}
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println("Response Body: " + responseBody);
}
}
在上述代码中,我们首先创建了一个 HttpClient
对象,其通过 HttpClientBuilder
类的 create
方法创建。然后,我们创建一个 HttpGet
对象,表示一个 GET 请求。通过调用 execute
方法,我们可以发送请求并获取响应。response.getStatusLine().getStatusCode()
可以获取响应的状态码,而 response.getAllHeaders()
可以获取所有的响应头信息。最后,通过 EntityUtils.toString(response.getEntity())
可以获取响应体的内容。
总结
通过使用 HttpURLConnection 或 Apache HttpClient,我们可以方便地获取返回的响应头信息。这些方法可以应用于各种不同的网络请求场景,帮助我们更好地与服务端进行通信。
希望本文对您有所帮助!如果您有任何疑问或建议,请随时提出。Happy coding!
"代码示例来源:[How to send HTTP request GET/POST in Java](