Comment obtenir l'en-tête de réponse HTTP en Java
Cet exemple vous montre comment obtenir les valeurs d'en-tête de réponse Http en Java.
1. Exemple JDK standard.
URL obj = new URL("/"); URLConnection conn = obj.openConnection(); //get all headers Map> map = conn.getHeaderFields(); for (Map.Entry > entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " ,Value : " + entry.getValue()); } //get header by 'key' String server = conn.getHeaderField("Server");
2. Exemple Apache HttpClient.
HttpClient client = HttpClientBuilder.create().build(); HttpGet request = new HttpGet("/"); HttpResponse response = client.execute(request); //get all headers Header[] headers = response.getAllHeaders(); for (Header header : headers) { System.out.println("Key : " + header.getName() + " ,Value : " + header.getValue()); } //get header by 'key' String server = response.getFirstHeader("Server").getValue();
1. Exemple de URLConnection
Voir un exemple complet pour obtenir la valeur des en-têtes de réponse via URLConnection.
ResponseHeaderUtil.java
package com.example; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; public class ResponseHeaderUtil { public static void main(String[] args) { try { URL obj = new URL("/"); URLConnection conn = obj.openConnection(); Map> map = conn.getHeaderFields(); System.out.println("Printing Response Header...\n"); for (Map.Entry > entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " ,Value : " + entry.getValue()); } System.out.println("\nGet Response Header By Key ...\n"); String server = conn.getHeaderField("Server"); if (server == null) { System.out.println("Key 'Server' is not found!"); } else { System.out.println("Server - " + server); } System.out.println("\n Done"); } catch (Exception e) { e.printStackTrace(); } } }
Sortie
Printing Response Header... Key : null ,Value : [HTTP/1.1 200 OK] Key : ETag ,Value : ["713cd-9b82-4dd6d789447c0"] Key : Content-Length ,Value : [39810] Key : Expires ,Value : [Fri, 24 May 2013 03:22:31 GMT] Key : Last-Modified ,Value : [Fri, 24 May 2013 02:22:31 GMT] Key : Connection ,Value : [Keep-Alive] Key : X-Powered-By ,Value : [W3 Total Cache/0.9.2.9] Key : Server ,Value : [Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635] Key : Pragma ,Value : [public] Key : Cache-Control ,Value : [public] Key : Date ,Value : [Fri, 24 May 2013 02:22:37 GMT] Key : Vary ,Value : [Accept-Encoding,Cookie] Key : Keep-Alive ,Value : [timeout=2, max=100] Key : Content-Type ,Value : [text/html] Key : Accept-Ranges ,Value : [bytes] Get Response Header By Key ... Server - Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Done
2. Exemple Apache HttpClient
Ceci est un exemple équivalent, mais utilisant Apache HttpClient.
ResponseHeaderUtil.java
package com.example; import org.apache.http.Header; 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; public class ResponseHeaderUtil { public static void main(String[] args) { try { HttpClient client = HttpClientBuilder.create().build(); HttpGet request = new HttpGet("/"); HttpResponse response = client.execute(request); System.out.println("Printing Response Header...\n"); Header[] headers = response.getAllHeaders(); for (Header header : headers) { System.out.println("Key : " + header.getName() + " ,Value : " + header.getValue()); } System.out.println("\nGet Response Header By Key ...\n"); String server = response.getFirstHeader("Server").getValue(); if (server == null) { System.out.println("Key 'Server' is not found!"); } else { System.out.println("Server - " + server); } System.out.println("\n Done"); } catch (Exception e) { e.printStackTrace(); } } }