Beginner Beginner - 1 month ago 8
Java Question

Setting custom header using HttpURLConnection

I am new to Java and I am simply making a

GET
request to a Rest API using
HttpURLConnection
.

I need to add some custom headers but I am getting
null
while trying to retrieve their values.

Code:

URL url;
try {
url = new URL("http://www.example.com/rest/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

// Set Headers
conn.setRequestProperty("CustomHeader", "someValue");
conn.setRequestProperty("accept", "application/json");

// Output is null here <--------
System.out.println(conn.getHeaderField("CustomHeader"));

// Request not successful
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("Request Failed. HTTP Error Code: " + conn.getResponseCode());
}

// Read response
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer jsonString = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
jsonString.append(line);
}
br.close();
conn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}


What am I missing? Any suggestions.

Answer

The conn.getHeaderField("CustomHeader") returns the response header not the request one.

To return the request header use: conn.getRequestProperty("CustomHeader")

Comments