OKHttp handle 302

8.5k views Asked by At

Every time I perform a OKHttp Post request on this site, the response code is 302 and the response body is:

<html>
    <head>
        <title>Object moved</title>
    </head>
    <body>
        <h2>Object moved to <a href="/GradebookSummary.aspx">here</a>.
       </h2>
    </body>
</html>

Here is my code:

OkHttpClient client = new OkHttpClient().newBuilder()
                            .followRedirects(false)
                            .followSslRedirects(false)
                            .build();
                    MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
                    RequestBody body = RequestBody.create(mediaType, "checkCookiesEnabled=true&checkMobileDevice=false&checkStandaloneMode=false&checkTabletDevice=false&portalAccountUsername=username&portalAccountPassword=password");
                    Request request = new Request.Builder()
                            .url("https://hac.chicousd.org/LoginParent.aspx?page=GradebookSummary.aspx")
                            .post(body)
                            .addHeader("content-type", "application/x-www-form-urlencoded")
                            .addHeader("cache-control", "no-cache")
                            .build();

                    Response response = client.newCall(request).execute();

My question is: How could I handle the response to be able to go to the new location?

2

There are 2 answers

0
Jacolack On BEST ANSWER

All I needed to do was add a persistent cookie handler, which I found here.

6
ashkhn On

OKhttp follows redirects by default but since you've explicitly disabled it in this case you'll need to check the Location header of the response to find the redirected url.

EDIT: You can get the new location via

String location = response.header('Location');