Eine Alternative, die es mir ermöglicht, ein HTML-Formular mit Kontrollkästchen und Radiobuttons zu füllen.Eine HtmlUnit Alternative für Android?
Ich schuf diese Android-App, die Benutzereingabe anfordert und sendet diese Daten an eine Website mit einem HTML-Formular, füllt es aus, übergibt das Formular und gibt die folgende Ergebnisseite zurück.
Ich habe bereits geschafft, Daten an das HTML-Formular zu senden und die Seite mithilfe der HtmlUnit-Bibliothek in Eclipse abrufen (Ich habe den Java-Code dafür unten veröffentlicht).
Als ich jedoch diesen Code in mein Android-Projekt kopiert habe, habe ich herausgefunden, dass Android die HtmlUnit-Bibliothek nicht unterstützt.
Gibt es eine andere Alternative zu HtmlUnit für Android? Die Alternative sollte in Texten füllen können, Kontrollkästchen, Optionsfelder in einem HTML-Formular aus und klicken Sie auf den Absenden-Button
HTML-Formular-Code:
<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-Code:
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());
}
'Die Alternative sollte in der Lage sein, Texte, Kontrollkästchen, Radiobuttons in ein HTML-Formular zu füllen und auf den Absenden-Button klicken. Verwenden Sie einfach HttpUrlConnection, um die Werte auf dem Webserver zu veröffentlichen (Aktions-URL). Sie müssen die Seite nicht einmal zuerst anfordern, da Sie wissen, welche Eingaben sich auf dem Formular befinden. – greenapps
Können Sie bitte weiter erklären, wie ich das erreichen könnte? Ich bin wirklich neu auf Android (tatsächlich Programmierung als Ganzes - ich habe gerade meinen ersten CS-Kurs). @greenapps – adonayresom
Eigentlich @greenapps habe ich eine Methode gefunden. Vielen Dank. Ich dachte darüber nach, was du gesagt hast, und fing an, online zu graben. Aber bitte versuchen Sie eine andere Frage zu beantworten. Ich habe die Frage unten gepostet. – adonayresom