Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OKHttp handle 302

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?

like image 305
Jacolack Avatar asked Jan 09 '17 01:01

Jacolack


1 Answers

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');
like image 140
ashkhn Avatar answered Oct 02 '22 22:10

ashkhn