Skip to content
Advertisement

Some Response headers not showing

These are the response headers I get when I try to fetch the headers

http-headers-screenshot

But when I try to get all headers through my code it does not show the location header.

Here is my code

 try {

            URL obj = new URL("https://app.armorcode.com/oauth2/authorization/okta-apptesting?email=manan.girdhar@armorcode.io");
            URLConnection conn = obj.openConnection();
            Map<String, List<String>> map = conn.getHeaderFields();

            System.out.println("Printing Response Header...n");

            for (Map.Entry<String, List<String>> entry : map.entrySet()) {
                System.out.println("Key : " + entry.getKey()
                        + " ,Value : " + entry.getValue());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

Can someone please tell me why the location header is missing

Advertisement

Answer

First of all try to get content, which you get from URLConnection, using (for example) following code:

String content = IOUtils.toString(conn.getInputStream(), StandardCharsets.UTF_8);

I think you get content for third GET on your screen (with status 200). You must prevent automatic redirects in HTTP Connection.
Try this:

public static void main(String[] args) throws Exception {
    final URL obj = new URL("https://app.armorcode.com/oauth2/authorization/okta-apptesting?email=manan.girdhar@armorcode.io");
    final URLConnection conn = obj.openConnection();

    // prevent automatic redirects
    final HttpURLConnection httpConn = (HttpURLConnection) conn;
    httpConn.setInstanceFollowRedirects(false);

    conn.connect();

    // content your for debug
    String content = IOUtils.toString(conn.getInputStream(), StandardCharsets.UTF_8);

    final Map<String, List<String>> map = conn.getHeaderFields();
    System.out.println("Printing Response Header...n");
    for (Map.Entry<String, List<String>> entry : map.entrySet()) {
        System.out.println("Key : " + entry.getKey()
                + " ,Value : " + entry.getValue());
    }
}
Advertisement