Следующие перенаправления в HTTPResponse Android - PullRequest
3 голосов
/ 11 декабря 2011

Мне нужно следовать перенаправлениям, данным мне HTTPost.Когда я создаю HTTPost и пытаюсь прочитать ответ, я получаю html-страницу перенаправления.Как я могу это исправить?Код:

public void parseDoc() {
    final HttpParams params = new BasicHttpParams();
    HttpClientParams.setRedirecting(params, true);
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(
            "https://secure.groupfusion.net/processlogin.php");
    String HTML = "";
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
        nameValuePairs.add(new BasicNameValuePair("referral_page",
                "/modules/gradebook/ui/gradebook.phtml?type=student_view"));
        nameValuePairs.add(new BasicNameValuePair("currDomain",
                "beardenhs.knoxschools.org"));
        nameValuePairs.add(new BasicNameValuePair("username", username
                .getText().toString()));
        nameValuePairs.add(new BasicNameValuePair("password", password
                .getText().toString()));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        String g = httppost.getURI().toString();

        HttpResponse response = httpclient.execute(httppost);

        HTML = EntityUtils.toString(response.getEntity());
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        String ResponseBody = httpclient.execute(httppost, responseHandler);
        sting.setText(HTML);

    } catch (ClientProtocolException e) {
    } catch (IOException e) {
    }

}

Ответы [ 2 ]

7 голосов
/ 11 декабря 2011

Когда сервер отправляет перенаправление, он фактически отправляет код ответа 3xx (обычно 301 или 302), который указывает на перенаправление, и заголовок Location, который сообщает вам новое местоположение.

Таким образом, в вашем случае вы можете получить заголовок Location из объекта HttpResponse и использовать его для отправки другого запроса на получение текущего содержимого после входа в систему. Например:

String newUrl = response.getFirstHeader("Location").getValue();

Пока вы повторно используете один и тот же объект HttpClient для обоих запросов, он должен использовать любые файлы cookie, установленные запросом на вход в систему в ваших последующих запросах.

3 голосов
/ 11 декабря 2011

Попробуйте использовать HttpGet метод

GetMethods будет следовать запросам перенаправления с http-сервера по умолчанию. Это поведение можно отключить, вызвав setFollowRedirects (false).

Для получения дополнительной информации см. это

Надеюсь, это поможет,

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...