2012-12-08 3 views
0

Я хочу отправить форму с веб-страницы, которая имеет несколько форм. Я хочу представить эту форму ниже, в частности.как подать форму с помощью jsoup

<form action="realDisplay.asp" method="post" name="Search" onSubmit="return validate(this); return submitForm();" target="_blank"> 
       <table width="98%" align="center" cellspacing="0" cellpadding="0" border="1" bordercolor="#FFFFFF"> 
       <tr> 
       <td width="127" class="style62" align="right">Parcel ID</td> 
       <td width="286"> 
        <div align="center"> 
        <table border="0" cellpadding="0" cellspacing="0" width="100%%" align="center"> 
         <tr> 
         <td align="left" class="style62">&nbsp; 
         <input name="rePID" size="15" maxlength="15" value=""> 
         <br> 
          <font class="style65">(12 123 12 123)</font></td> 
         </tr> 
        </table> 
        </div> 
       </td> 
       </tr> 
       <tr> 
       <td width="127" class="style62" align="right">Partial Parcel ID</td> 
       <td width="286"> 
        <div align="center"> 
        <table border="0" cellpadding="0" cellspacing="0" width="100%%" align="center"> 
         <tr> 
         <td align="left" class="style62">&nbsp; 
         <input name="rePartialPID" size="15" maxlength="15" value=""> 
         <br> 
          <font class="style65">(12 123)</font></td> 
         </tr> 
        </table> 
        </div> 
       </td> 
       </tr> 
       <tr> 
       <td class="style62" align="right">Address</td> 
       <td class="style62" align="left">&nbsp; 
        <input name="Address" size="38" maxlength="50" value=""> 
       </td> 
       </tr> 
       <tr> 
       <td class="style62" align="right" nowrap="nowrap">Partial Street Name</td> 
       <td class="style62" align="left">&nbsp; 
        <input name="streetName" size="38" maxlength="50" value=""> 
       </td> 
       </tr> 
       <tr> 
       <td class="style62" align="right" nowrap="nowrap">Owner Name</td> 
       <td class="style62" align="left">&nbsp; 
        <input name="OwnerName" size="30" maxlength="50" value=""> 
       </td> 
       </tr> 
       <tr> 
       <td colspan="2"><br /><font class="style64">Insert</font> 
        <font class="style65"><u>Either</u></b></font><font class="style64">&nbsp;a</font>:<br> 
       <br> 
       <table align="center" border="1" cellspacing="0" cellpadding="3" bgcolor="#E8E8E8"> 
        <tr> 
         <td align="left"><img src="Images/arrow_1.gif" width="9" height="7" vspace="0" hspace="8"></td> 
         <td class="style75" align="left"> 
         <a class="nav4" href="GlossaryTermWin.htm#ParcelID" onClick="NewWindow(this.href,'PARCELID','635','635','yes');return false;"> 
        Parcel ID</a> , or Partial Parcel ID</td> 
        </tr> 
        <tr> 
        </tr> 
        <tr> 
         <td> 
         <img src="Images/arrow_1.gif" width="9" height="7" vspace="0" hspace="8"></td> 
         <td class="style75" align="left">Address (eg. 123 main), or</td> 
        </tr> 
        <tr> 
         <td class="style75" align="left"> 
         <img src="Images/arrow_1.gif" width="9" height="7" vspace="0" hspace="8"></b></font></td> 
         <td class="style75">Partial Street Name (eg. main), or</td> 
        </tr> 
        <tr> 
         <td class="style75"> 
         <img src="Images/arrow_1.gif" width="9" height="7" vspace="0" hspace="8"></b></font></td> 
         <td class="style75" align="left">Owner Name <br />(eg. LastName,FirstName <br />or 
           Partial Owner Name)</td> 
        </tr> 
       </table> </td> 
       </tr> 
       <tr> 
       <td colspan="2">&nbsp;</td> 
        </tr> 
       <tr> 
       <td height="26" colspan="2" align="center"> 
       <input type="image" valign="top" name="Submit" value="Search" src="images/search.jpg" align="top" alt="Search by either the Parcel ID or Address or Owner Name that is associated by the real estate information."> 
       <a href="javascript:document.forms[0].reset()" border="0"><img src="images/reset.jpg" align="top" border="0" alt="Reset the values on this page." onClick="ResetForm()"></a></td> 
       </tr> 
    </table> 
</form></td> 

Мой Java код выглядит следующим образом:

Document doc = Jsoup.connect("http://web.somewebsite.asp") 
        .data("rePID", "15 197 14 007") 
        .post(); 

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

Что мне нужно сделать в коде Java, чтобы убедиться, что отправленный запрос был отправлен и просмотреть содержимое следующей страницы после отправки формы.

Я смог отправить форму с помощью Htmlunit, вы можете выполнить поиск в Интернете и загрузить пакет.

import com.gargoylesoftware.htmlunit.html.HtmlForm; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; 
import com.gargoylesoftware.htmlunit.html.HtmlImageInput; 
import com.gargoylesoftware.htmlunit.html.HtmlTextInput; 
import com.gargoylesoftware.htmlunit.BrowserVersion; 
import com.gargoylesoftware.htmlunit.WebClient; 

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10); 
final HtmlPage searchPage = webClient.getPage("http://web.somewebsite.asp"); 

    final HtmlForm form = searchPage.getFormByName("Search"); 
    final HtmlTextInput textField = form.getInputByName("rePID"); 
    textField.setValueAttribute("15 197 14 007"); 
    final HtmlImageInput button = form.getInputByName("Submit"); 
    HtmlPage searchResultPage = (HtmlPage)button.click(); 
+0

посмотрите последний параметр http://stackoverflow.com/a/8986700/423868 Предположим, вам нужно добавить кнопку отправки в форму и передать ее как параметр –

+0

Спасибо, что указали мне в правильном направлении. Мой Java код выглядит следующим образом: Документ DOC = Jsoup.connect ("http://website.com/realSearch.asp") \t \t \t .data ("rePID", "15 197 14 007") \t \t \t .data («Отправить», «Поиск») \t \t \t .post(); Как просмотреть полученную веб-страницу после отправки формы. – user1701556

+0

Вы можете разобрать документ jsoup, который вы получаете, или вы можете String html = document.HTML(); –

ответ

3

Прежде всего, вам необходимо будет исследовать страницу. У Chrome есть хорошая встроенная функция для ее поддержки. Просто нажмите F12, и вы увидите довольно мало вариантов, и вы можете исследовать почти все, что связано с определенным запросом HTML. Более новые версии IE также имеют нечто похожее. Firefox имеет большое расширение firebug.

Вы можете видеть Cookies, которые используются сервером. Может быть, вы их не замечаете. Довольно часто наиболее важным является Set-Cookie. Вам нужно будет добавить его в запрос на отправку Cookie, который вы будете отправлять в запрос POST Html.

В вашем случае вам также необходимо проверить функцию Java Script SubmitForm. Помните, что JavaScript, вероятно, не будет вызываться из вашего кода. Ваша страница, на которую вам нужно отправить запрос, будет «realDisplay.asp».

Когда-нибудь браузер отправит запрос на отправку с некоторыми параметрами в строке URL, например, с GET. Также проверьте их. Сделайте ваши POST-запросы точно такими же, как в браузере.

Пожалуйста, проверьте, сколько времени занимает сеанс во время входа в систему через браузер. Чтобы продолжить сеанс, вам нужно будет отправить некоторые заявки в приложение. Если они не отправлены, вам необходимо снова войти в систему.

Существует еще один ответ на использование jsoup с cookies.

jsoup posting and cookie

Connection.Response res = Jsoup.connect("http://www.example.com/login.php") 
.data("username", "myUsername", "password", "myPassword") 
.method(Method.POST) 
.execute(); 

Document doc = res.parse(); 

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Смежные вопросы