Java POST HTTPsUrlConnection возвращает ответ 200 - PullRequest
1 голос
/ 17 марта 2011

Я пытаюсь опубликовать некоторые данные для входа в форму, чтобы получить куки из ответа. URL-адрес: https://www.deviantart.com/users/login

Однако я не могу заставить сервер вернуть FOUND 302, а только 200, поэтому я думаю, что я каким-то образом выполняю строку запроса или заголовки:

try {
        String query = URLEncoder.encode("&username="+user+"&password="+password+"&remember_me=1", "UTF-8");
        URL url = new URL("https://www.deviantart.com/users/login");
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        HttpsURLConnection.setFollowRedirects(false);

        conn.setRequestMethod("POST");
        conn.setRequestProperty("Host", "www.deviantart.com");
        conn.setRequestProperty("User-Agent", "Mozilla 4.0");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setRequestProperty("Content-Length", String.valueOf(query.length()));
        conn.setRequestProperty("Content-Language", "en-US");

        conn.setUseCaches(false);
        conn.setDoOutput(true);
        conn.setDoInput(true);

        PrintWriter out = new PrintWriter(conn.getOutputStream(), false);
        out.write(query);
        out.flush();

Ответы [ 2 ]

0 голосов
/ 17 марта 2011

Ответ 302 - это перенаправление ..., указывающее браузеру перейти на другую страницу.Страница входа в систему сайта часто делает это, чтобы отправить пользователя на страницу «вход выполнен успешно», или обратно на домашнюю страницу или страницу, на которую первоначально смотрел пользователь.Но это не обязательно.

Ответ 200 означает «Успешно», и для запроса POST браузер останется на странице входа в систему.

Я бы не стал беспокоитьсяполучая 200 вместо 302. Если вы отправляете запросы из приложения Java, вам, вероятно, все равно, куда сайт перенаправляет вас после входа в систему.Важно то, были ли приняты ваши учетные данные, и вы можете определить это, только попробовав запрос, требующий аутентификации.(Вам необходимо убедиться, что ваш код захватывает файлы cookie, установленные в ответе на ваш POST для входа в систему. Они должны предоставляться в последующих запросах.)

Если вы беспокоитесь о том, что «потеряли»URL-адрес для входа в систему String, извлеките страницу входа в систему и посмотрите на ее источник, чтобы увидеть, есть ли какие-либо скрытые данные в форме.

0 голосов
/ 17 марта 2011

Насколько я знаю, получение ответа "200" нормально, означает, что ваш запрос был распознан и получил правильный ответ.

Но когда мне нужно узнать об ответах HTTP-кода и некоторых деталях, я обычно использую эту ссылку: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.

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

...