Я хотел бы отправить форму программно в андроиде. Я не хочу взаимодействия с пользователем с веб-браузером. Пользователь обеспечит исходные данные в EditField, и затем исходные данные будут отправлены Через метод сообщения http через HTTPwebmethod. Но я не получил успеха в том же. Советуйте. Я использовал HTMLUnit в Java, но не работа в андроиде.
final WebClient webClient = new WebClient();
final HtmlPage page1 = webClient.getPage("http://www.mail.example.com");
final HtmlForm form = page1.getHtmlElementById("loginform");
final HtmlSubmitInput button = form.getInputByName("btrn");
final HtmlTextInput textField1 = form.getElementById("user");
final HtmlPasswordInput textField2 = form.getElementById("password");textField1.setValueAttribute("user.name");
textField2.setValueAttribute("pass.word"); final HtmlPage page2 = button.click();
Ой. Извините. Похоже, вы все-таки пытаетесь выполнить POST через браузер.
Вот фрагмент, который я использовал для выполнения HTTP POST в Android без использования веб-браузера:
HttpClient httpClient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), TIMEOUT_MS);
HttpConnectionParams.setSoTimeout(httpClient.getParams(), TIMEOUT_MS);
HttpPost httpPost = new HttpPost(url);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("name1", "value1"));
nameValuePairs.add(new BasicNameValuePair("name2", "value2"));
nameValuePairs.add(new BasicNameValuePair("name3", "value3"));
// etc...
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
Я думаю, что это должно сработать для того, что вы пытаетесь сделать. У меня TIMEOUT_MS установлен на 10000 (значит, 10 секунд)
Затем вы можете прочитать ответ сервера, используя что-то вроде этого:
BufferedReader br = new BufferedReader(new InputStreamReader(response.getEntity().getContent()), 8096);