Je n'arrive pas à comprendre pourquoi le programme Java HttpURLConnection
ne suit pas une redirection HTTP d'une URL HTTP vers une URL HTTPS. J'utilise le code suivant pour obtenir la page à https://httpstat.us/ :
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.InputStream;
public class Tester {
public static void main(String argv[]) throws Exception{
InputStream is = null;
try {
String httpUrl = "http://httpstat.us/301";
URL resourceUrl = new URL(httpUrl);
HttpURLConnection conn = (HttpURLConnection)resourceUrl.openConnection();
conn.setConnectTimeout(15000);
conn.setReadTimeout(15000);
conn.connect();
is = conn.getInputStream();
System.out.println("Original URL: "+httpUrl);
System.out.println("Connected to: "+conn.getURL());
System.out.println("HTTP response code received: "+conn.getResponseCode());
System.out.println("HTTP response message received: "+conn.getResponseMessage());
} finally {
if (is != null) is.close();
}
}
}
La sortie de ce programme est :
Original URL: http://httpstat.us/301
Connected to: http://httpstat.us/301
HTTP response code received: 301
HTTP response message received: Moved Permanently
Une demande de http://httpstat.us/301 renvoie la réponse (abrégée) suivante (qui semble tout à fait correcte !):
HTTP/1.1 301 Moved Permanently
Cache-Control: private
Content-Length: 21
Content-Type: text/plain; charset=utf-8
Location: https://httpstat.us
Malheureusement, le système de Java HttpURLConnection
ne suit pas la redirection !
Notez que si vous changez l'URL d'origine en HTTPS ( https://httpstat.us/301 ), Java sera suivre la redirection comme prévu ! ?
1 votes
Bonjour, j'ai modifié votre question pour plus de clarté et pour indiquer que la redirection vers HTTPS en particulier est le problème. De plus, j'ai changé le domaine bit.ly pour un autre, car l'utilisation de bit.ly est sur liste noire dans les questions. J'espère que cela ne vous dérange pas, n'hésitez pas à rééditer votre question.