Проблемы со входом на веб-страницу с использованием java и jaunt-api

Поэтому я пытаюсь зайти на веб-страницу с помощью Jaunt. Первое, что нужно упомянуть, это то, что веб-страница имеет формат.aspx, а кнопка отправки имеет возможность onclick="javascript:WebForm_DoP..." и насколько я знаю, Jaunt не поддерживает Javascript, верно? На случай, если я ошибаюсь, код, который я использую, приведен в примерах Jaunt:

Form form = userAgent.doc.getForm(0);
form.setTextField("Login1$UserName","USER");
form.setPassword("Login1$Password","PASSWORD");
form.setCheckBox("Login1$RememberMe",false);
form.submit("GO");
System.out.println(userAgent.getLocation());

Все имена и значения верны, а пользователь и пароль работают, поскольку я могу войти в систему с помощью веб-браузера. После того, как я выполню код, в выводе я получаю это:

сообщение: UserAgent.sendPOST; Ошибка соединения requestUrl: http://webpagehere.com/default.aspx [размещение __VIEWSTATE=%2FwEPDwUJLTk5MDc0NjQ2ZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAgURTG9naW4xJFJlbWVtYmVyTWUFF0xvZ2luMSRMb2dpbkltYWdlQnV0dG9upWcarODJIwpeMt8HCmfaBn6iMWI%3D&__VIEWSTATEGENERATOR=CA0B0334& Имя_входа1%24UserName=USER& Имя_входа1%24Password= ПАРОЛЬ & Имя_входа1%24LoginButton=GO] Ответ: [ни]

Форма div такая:

<form name="form1" method="post" action="Default.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="form1" style="text-align:center">

Есть идеи, в чем может быть моя проблема? Если Jaunt не позволяет мне войти в систему, может кто-нибудь порекомендовать мне библиотеку для проверки и взаимодействия в Интернете? Спасибо!

1 ответ

Похоже, вы застряли. На самом деле. ASPX-страницы используют нумерацию страниц AJAX. Вам нужно будет извлечь значения __VIEWSTATE, __VIEWSTATEGENERATOR и всех других значений формы, а затем отправить их методом POST в теле запроса. Вы можете использовать Fiddler, чтобы получить тело запроса, которое содержит все эти скрытые переменные и ваши записи в форме.

В Java вы можете использовать Selenium или HTMLUnit, которые являются браузером Java GUI-Less, поддерживающим JavaScript, для запуска веб-страниц.

edit: Вы также можете использовать Jaunt-api, я только что попробовал с ним, все, что вы делаете, это отправляете POST-запрос вместе с телом запроса, вы можете легко проверить это с помощью Fiddler, и это работает!!

Значения форм в HTTP POST отправляются в теле запроса в том же формате, что и строка запроса. Вы можете найти тело запроса ссылки, проверив его с помощью Fiddler, а затем скопировать тело запроса из Textview и отправить закодированные данные в качестве тела запроса.

UserAgent userAgent = new UserAgent();
userAgent.sendPOST("<your link to form page>","<request body>");
Другие вопросы по тегам