Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> onclick, передача данных методом пост. 
V
    Опции темы
Likurgius
Дата 29.10.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



Ув. Участники.....снова столкнулся с проблемой.....Передаю данные методом пост, вот так:
Код

 void dataSending() {
         try {
            // Construct data
            String data = URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode("asdfgh", "UTF-8");

            // Send data
            URL url = new URL("http://www.blbla.com/information/receiving");
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
            FileWriter fw = new FileWriter("C:/webpage.html");
            wr.write(data);
            wr.flush();

            // Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = rd.readLine()) != null) {
                fw.write(line);
            }
            wr.close();
            rd.close();
            fw.flush();
            fw.close();
        } catch (Exception e) {
            System.err.println(e);
        }
    }


Все пересылвается, а главное, принимается правильный ответ сервера, если страница построена примерно так: 
Код

<form action="/information/receiving" method="post">
введите информацию!<br />
<input type="login" name="login" maxlength="25">
<input type="submit" value=">>">
</form>


Но вот проблема, если сделана немножечко по-другому:
Код

<form action="/information/receiving" method="POST" name="f" class="my">
    <p><br>введите информацию.<br></p>
    <input type=hidden name=url value='/information/receiving'>
    <p><input id="log" type="login" name="log" value="" size="50">&nbsp;&nbsp;<input type="submit" onclick="return check_log();" value="войти" class="button"></p>
</form>

То возникает проблема.....ибо данные отосланы, но как видно тут присутствует такая функция как onclick......то есть тут обязательно надо нажать на кнопку....
что с ней делать?есть ли какой-нибудь способ программно "нажать на кнопку"?
насколько я понимаю, в первом случае этого делать не обязательно(ведь работает же).
Буду благодарен за помощь.
PM MAIL   Вверх
kkorsakoff
Дата 29.10.2006, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 14



Приведи код javascript функции check_log().
Скорее всего в ней проверяются значения/устанавливаются hidden переменные.
Над выяснить логику этой функции и программно эмулировать ее.
И "кликать" будет необязательноsmile
PM MAIL WWW ICQ   Вверх
Likurgius
Дата 29.10.2006, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



Боюсь, это невозможно smile 
Что она делает, я и так могу сказать: она проверяет правильность того "логина", который переслал я, с тем, который хранится в базе данных.
В первом случае это делается тоже, только там нету этого злополучного onclick.....
Поэтому, логику этой функции вряд ли можно программно эмулировать smile

а "кликать" программно не удается?
PM MAIL   Вверх
Sardar
Дата 30.10.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(Likurgius @  29.10.2006,  20:21 Найти цитируемый пост)
а "кликать" программно не удается?

А при чём тут "клики" вообще?

Первая форма отсылает login=..., вторая url=/information/receiving и log=..., т.е. совсем другие имена параметров. Также вижу нормального HTTP запроса ты не делаешь. Возможно во втором случае ты пытаешься обратиться к настоящему сервису, а не к собственному эмулятору, тот требует валидный HTTP запрос (POST /information/receiving HTTP/1.1\r\nHost:www.blbla.com....)

Если не поможет, то JS во второй форме создаёт hidden поля или приписывает GET параметры в action, тебе потребуеться повторить.


P.S. и зачем для этого Java пользовать? smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Likurgius
Дата 31.10.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



То, что разные параметры - я понимаю.....и делаю так, как нужно...попробую сделать через Ява нормальный хттп запрос...

П.С а если таких страниц скажем 25, то лично мне влом каждый раз заходить и заполнять поля.
PM MAIL   Вверх
kkorsakoff
Дата 31.10.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 14



Я бы забил на все эти javascript'ы и посмотрел бы при помощи любого анализатора протоколов (в обиходе сниффер) что и как передается, и программно эмулировал бы все запросы с нужной точностью (я имею ввиду насколько сервер требователен к таким заголовкам, как User-Agent, Referer, Accept и пр...). Так получится быстрее и надежнее, чем разбираться в html и javascript.
PM MAIL WWW ICQ   Вверх
Sardar
Дата 31.10.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(kkorsakoff @  31.10.2006,  16:26 Найти цитируемый пост)
Так получится быстрее и надежнее

На счёт надёжней не уверен, могут быть ньюансы.
Проще всего если ты даш линку на страницу с формой, мы посмотрим скрипты и точно решим что/как отсылать.

Цитата(Likurgius @  31.10.2006,  14:19 Найти цитируемый пост)
П.С а если таких страниц скажем 25, то лично мне влом каждый раз заходить и заполнять поля.

В смысле почему на Java, когда на питоне или PHP-CLI (не надо говорить фи smile ) дело 10 минут от силы. Естественно масса либ простых готовых если совсем с HTTP разбираться не хочеться.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Likurgius
Дата 1.11.2006, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



Спасибо всем за помощь smile разобрался.....взял httpWatch и начал смотреть...нек-рые серверы действительно оказались требовательны кое к чему...

Сардар, так уж получилось, что Php я не владею smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.