मुझे समझ नहीं आ रहा है कि HttpURLConnection
एक HTTP से HTTPS URL पर जावा पुनर्निर्देशित जावा का पालन क्यों नहीं करता है। मैं 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();
}
}
}
इस कार्यक्रम का आउटपुट है:
मूल URL: http://httpstat.us/301 से जुड़ा: http://httpstat.us/301 HTTP प्रतिक्रिया कोड प्राप्त: 301 HTTP प्रतिसाद संदेश प्राप्त हुआ: स्थायी रूप से ले जाया गया
Http://httpstat.us/301 के लिए एक अनुरोध निम्नलिखित (संक्षिप्त) प्रतिक्रिया देता है (जो बिल्कुल सही लगता है):!
HTTP/1.1 301 Moved Permanently
Cache-Control: private
Content-Length: 21
Content-Type: text/plain; charset=utf-8
Location: https://httpstat.us
दुर्भाग्य से, जावा HttpURLConnection
रीडायरेक्ट का पालन नहीं करता है!
ध्यान दें कि यदि आप मूल URL को HTTPS ( https://httpstat.us/301 ) में बदलते हैं , तो जावा अपेक्षित रूप से पुनर्निर्देशित होगा !?