Java HttpURLConnection doesn't connect when I call connect()

connection, http-status-code-302, httpurlconnection, java, url

Solution

The `connect()` method just creates a connection. You have to commit the request (by calling `getInputStream()`, `getResponseCode()`, or `getResponseMessage()`) for the response to be returned and processed.

Problem

I'm trying to write a program to do automated testing on my webapp. To accomplish this, I open up a connection using HttpURLConnection. One of the pages that I'm trying to test performs a 302 redirect. My test code looks like this : ``` URL currentUrl = new URL(urlToSend); HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection(); connection.connect(); system.out.println(connection.getURL().toString()); ``` So, let's say that urlToSend is http://www.foo.com/bar.jsp, and that this page redirects you to http://www.foo.com/quux.jsp. My println statement should print out http://www.foo.com/quux.jsp, right? WRONG. The redirect never happens, and it prints out the original URL. However, if I change switch out the connection.connect() line with a call to connection.getResponseCode(), it magically works. ``` URL currentUrl = new URL(urlToSend); HttpURLConnection connection = (HttpURLConnection) currentUrl.openConnection(); //connection.connect(); connection.getResponseCode(); system.out.println(connection.getURL().toString()); ``` Why am I seeing this behavior? Am I doing anything wrong? Thanks for the help.

Original source