I'm sending a HttpURLConnection
with setInstanceFollowRedirects(true)
and POST
, get a redirect response that looks like this:
HTTP/1.1 302 Found
Server: nginx
Date: Wed, 09 Jan 2013 20:47:56 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Status: 302 Found
Status: 301 Moved Permanently
Location: http://foo.bar/...
And the next request that the JVM sends is a GET
request (to the correct, redirected URL). It also seems to drop one of the HTTP headers I added to the original request.
FYI, I'm not using HttpURLConnection
directly, but rather through Play Framework's WS wrapper.
My question is - is this a known issue with Java (Sun JVM 1.7.0)? Or could it be a bug in Play Framework?
An alternative, assuming you control the server: use status code 307.
This is the default behavior of Java. You can change it by setting the system property http.strictPostRedirect=true.
For details, please see this quote from the Java source HttpURLConnection implementation source: