пытаюсь зайти на сайт ... немного запутался - PullRequest
1 голос
/ 30 января 2012

Приведенная ниже программа продолжает вывод исходного кода исходной страницы входа в систему в точке B. Почему это происходит? Как я могу исправить это? получить данные следующей веб-страницы, которая должна появиться.

<form method="POST" name="logonform" action="/check-443/logon.logonform" autocomplete="off">
       <input type="hidden" name="CDT"                  value="12313">
       <input type="hidden" name="NEW_PASSWORD"         value="">
       <tr>
         <td class="content">
           <label for="User">Username</label>
         </td>
         <td>
           <input type="text" name="LOGON" id="id" value="" size="15" maxlength="15">
         </td>
       </tr>
       <tr>
         <td class="content">
           <label for="pass">Password:</label>
         </td>
         <td>
           <input type="password" name="PASSWORDS" id="pw" value="" size="15">
         </td>
       </tr>
       <tr>
         <td>
           <input type="submit" value="Log In">
        </td>
       </form>

Мой код не работает (я видел это онлайн и подумал, что это может быть применимо)

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("https://abc.cba.com");

    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("id", "Username"));
    nameValuePairs.add(new BasicNameValuePair("pw", "*****"));
    nameValuePairs.add(new BasicNameValuePair("Log In", "Log In"));
    try {
        UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nameValuePairs);
        httppost.setEntity(p_entity);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        int status_code = response.getStatusLine().getStatusCode();

        if (status_code >= 300) {
            Log.d("asf", "Error"); //POINT A***************
            return false;

        } else {
            Log.d("asf", EntityUtils.toString(entity)); //POINT B***************
            return true;
        }

    } catch (Exception uee){}
    return false;

Ответы [ 2 ]

1 голос
/ 01 февраля 2012

Чтобы «войти в систему», используя ваш клиент вместо страницы входа в HTML, вам необходимо опубликовать данные формы входа в том же месте, что и форма.

В этом случае вы должны отправить в "/check-443 / logon.logonform "от вашего клиента, чтобы он действовал как веб-форма (вот где текущая форма публикует свои данные).

Я предлагаю пойти в w3schools подтягивать ваше понимание на формах.

0 голосов
/ 30 января 2012

Попробуйте добавить эти скрытые поля ввода (CDT, NEW_PASSWORD) в nameValuePairs и посмотрите, имеет ли это какое-либо значение.Не помню, должен ли этот «Вход» быть там или нет, может попытаться удалить это.

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