Отправить веб-форму в Android программно - PullRequest
0 голосов
/ 24 января 2012

Я пытаюсь зайти на сайт и программно загрузить веб-страницу в Android. То есть у меня есть пароль и логин, и мне нужно отправить веб-форму и получить страницу с ответом. Я попробовал код здесь: Выполнение HTTP Post с Android но я думаю, что могу ошибаться.

Если я пытаюсь зайти на этот сайт: http://goo.gl/eiBhP и мой код

HttpClient httpclient =  new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(Constants.MAIN_URL);
List<namevaluepair> nameValuePairs = new ArrayList<namevaluepair>(2);
nameValuePairs.add(new BasicNameValuePair("username", "correctusername"));
nameValuePairs.add(new BasicNameValuePair("password", "correctpassword"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpost);

Тогда я смогу использовать

BufferedReader br = new BufferedReader(new InputStreamReader(
    entity.getContent()), 8096);

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

1 Ответ

2 голосов
/ 25 января 2012

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

Вам нужно взглянуть на источник веб-страницы для входа и понять, что он делает, когда отправляете данные для входа в систему - вам не обязательно знать, что означают все значения, но ваш код должен предоставлять те же данные POST.

Если веб-сайт использует информацию о состоянии, вы не сможете жестко закодировать эти входные значения в своем коде. Возможно, вам придется каждый раз получать новый экземпляр веб-страницы входа в систему с помощью HTTP-запроса GET, а затем анализировать данные для извлечения соответствующих данных о состоянии. Не забывайте, что они также могут использовать куки, которые вам, возможно, понадобится отправить.

В общем, вам, вероятно, нужно проделать гораздо больше работы, чтобы привести его в рабочее состояние. Не пытаюсь вас отговорить (и я не знаю, чего вы пытаетесь добиться), но, возможно, проще просто использовать веб-сайт!

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