I am using the following java snippet for a HEAD request. The request gets redirected couple of times, a 301 followed by 302 and dinally gets a 200.When i use the following code snippet, i get the status as 200 OK, however all the header fields are from the 1st response (301). The Content-Length header is present in the last response, but i don't see that in the header's received by the code. Is there a knob to get the last header or all headers?
private static final String SAMPLE_URL = "https://www.dropbox.com/s/<something>/test_out4.mp4"; public static void main(String[] args) throws IOException, URISyntaxException { HttpClient client = HttpClientBuilder.create().build(); HttpHead request = new HttpHead(new URI(SAMPLE_URL)); HttpResponse response = client.execute(request); System.out.println(response.getStatusLine()); for (Header header : response.getAllHeaders()) { System.out.println(header.getName() + ": " + header.getValue()); } } It returns the code as 200 OK, but the Content-Type is incorrect, even the HTTP/1.1 200 OK <<< Status is 200 Server: nginx Date: Thu, 20 Jun 2019 02:22:58 GMT Content-Type: text/html; charset=utf-8 << Content type is char <<<< Content-Length is missing!!!!! curl -I https://www.dropbox.com/s//test_out4.mp4 << Curl works correctly HTTP/1.1 301 Moved Permanently <<< Status 301 Server: nginx Date: Thu, 20 Jun 2019 02:20:50 GMT Content-Type: text/html; charset=utf-8 <<< Content type text Connection: keep-alive .... HTTP/1.1 302 Found << second redirect Server: nginx Date: Thu, 20 Jun 2019 02:36:03 GMT Content-Type: text/html; charset=utf-8 .... HTTP/1.1 200 OK <<< Status finally 200 Server: nginx Date: Thu, 20 Jun 2019 02:36:04 GMT Content-Type: video/mp4 << content type correct Content-Length: 92894175 << length correct Connection: keep-alive
