私はチェックボックスやラジオボタンを持つHTMLフォームを記入することができます代替。アンドロイドのHtmlUnitの代替手段ですか?
私は、ユーザーの入力を求めてそのデータをHTMLフォームのWebサイトに送信し、入力してフォームを送信し、次の結果ページを返します。
私はすでに(私は以下のことのためのJavaコードを掲載している)htmlフォームにデータを送信し、日食にHtmlUnitライブラリを使用してページを取得するために管理。私は私のAndroidのプロジェクトにそのコードをコピーしたとき
しかし、私はAndroidがHtmlUnitライブラリをサポートしていないことが分かりました。アンドロイドのためHtmlUnitするための別の代替は
ありますか?代替は、HTMLフォームにテキスト、チェックボックス、ラジオボタンに記入することができ、送信ボタン
HTMLフォームのコードをクリックしてください。
<form method="post" action="https://www.xxxxx.com/cgi-bin/xxxxxx.cgi">
<p><em>Person:</em>
<input size="18" name="name"><br>
<input type="radio" name="login" value="no" checked="">Name <input type="radio" name="login" value="yes">Username</p>
<p><em>Title:</em>
<input size="18" name="title"></p>
<p><em>Department:</em>
<input size="18" name="department"></p>
<p><em>Groups to Search:</em><br>
<input type="checkbox" name="get_student" value="yes" checked=""> Students<br>
<input type="checkbox" name="get_alum" value="yes" checked=""> Alumni<br>
<input type="checkbox" name="get_staff" value="yes" checked=""> Staff<br>
<input type="checkbox" name="get_faculty" value="yes" checked=""> Faculty</p>
<p><input type="submit" value="Search"></p>
</form>
HtmlUnit Javaコード:
public static String submittingForm() throws Exception {
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_38);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
WebRequest request = new WebRequest(new URL("https://www.xxxxx.com/"));
// Get the first page
HtmlPage page1 = webClient.getPage(request);
System.out.println("PULLING LINKS/ LOADING:");
// Get the form that we are dealing with and within that form,
// find the submit button and the field that we want to change.
List<HtmlForm> listform = page1.getForms();
HtmlForm form = listform.get(0);
HtmlElement Name = page1.getElementByName("name");
Name.click();
Name.type("Adonay");
HtmlElement nameRadio = page1.getFirstByXPath("/html/body//div[@id='wrapper']//div[@id='layout']//div[@id='container']//div[@id='col1']//div[@id='content']//div[@class='directory-search']//form//input[@type='radio' and @value='no']");
HtmlElement userRadio = page1.getFirstByXPath("/html/body//div[@id='wrapper']//div[@id='layout']//div[@id='container']//div[@id='col1']//div[@id='content']//div[@class='directory-search']//form//input[@type='radio' and @value='yes']");
/* userRadio.click(); click when username wanted*/
HtmlElement Title = page1.getElementByName("title");
Title.click();
Title.type("");
HtmlElement Department = page1.getElementByName("department");
Department.click();
Department.type("");
HtmlElement studentBox = page1.getFirstByXPath("/html/body//div[@id='wrapper']//div[@id='layout']//div[@id='container']//div[@id='col1']//div[@id='content']//div[@class='directory-search']//form//input[@type='checkbox' and @name='get_student']");
studentBox.click();
//add clicker here
HtmlElement alumniBox = page1.getFirstByXPath("/html/body//div[@id='wrapper']//div[@id='layout']//div[@id='container']//div[@id='col1']//div[@id='content']//div[@class='directory-search']//form//input[@type='checkbox' and @name='get_alum']");
alumniBox.click();
//add clicker here
HtmlElement staffBox = page1.getFirstByXPath("/html/body//div[@id='wrapper']//div[@id='layout']//div[@id='container']//div[@id='col1']//div[@id='content']//div[@class='directory-search']//form//input[@type='checkbox' and @name='get_staff']");
staffBox.click();
//add clicker here
HtmlElement facultyBox = page1.getFirstByXPath("/html/body//div[@id='wrapper']//div[@id='layout']//div[@id='container']//div[@id='col1']//div[@id='content']//div[@class='directory-search']//form//input[@type='checkbox' and @name='get_faculty']");
facultyBox.click();
//add clicker here
HtmlElement button = page1.getFirstByXPath("/html/body//div[@id='wrapper']//div[@id='layout']//div[@id='container']//div[@id='col1']//div[@id='content']//div[@class='directory-search']//form//input[@type='submit' and @value='Search']");
// Change the value of the text field
// Now submit the form by clicking the button and get back the second page.
HtmlPage page2 = button.click();
webClient.waitForBackgroundJavaScript(200);
return(page2.asXml());
}
'代替は、HTMLフォームにテキスト、チェックボックス、ラジオボタンを記入して提出するbutton'をクリックすることができるはずです。いいえ、HttpUrlConnectionを使用してWebサーバー(アクションURL)に値を送信してください。フォームに入力されている情報が分かるので、ページを最初に要求する必要はありません。 – greenapps
私はそれをどのように達成することができるかさらに説明できますか? Imは本当に新しいアンドロイド(実際にプログラミング全体 - 私はちょうど私の最初のCSコースを取った)。 @greenapps – adonayresom
実際に@greenapps私は方法を見つけました。ありがとう。私はあなたが言ったことを考え、オンラインで掘り起こし始めました。しかし、別の質問に答えるようにしてください。私は以下の質問を投稿した。 – adonayresom