OKHttp句柄302

时间:2017-01-09 01:24:55

标签: java android okhttp okhttp3 http-status-code-302

每次我在this网站上执行OKHttp Post请求时,响应代码为302,响应正文为:

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

这是我的代码:

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();

我的问题是:如何处理能够转到新位置的响应?

2 个答案:

答案 0 :(得分:5)

OKhttp默认情况下会重定向,但由于您在这种情况下明确禁用了重定向,因此您需要检查响应的Location标头以找到重定向的网址。

编辑:您可以通过

获取新位置
String location = response.header('Location');

答案 1 :(得分:0)

我需要做的就是添加一个持久的cookie处理程序,我找到了here