отправить HTML-форму программно в Android - PullRequest
5 голосов
/ 01 июня 2010

Я хотел бы отправить форму программно в Android. Я не хочу никакого взаимодействия с пользователем через веб-браузер. Пользователь предоставит входные данные в EditField, а затем входные данные будут отправлены через HTTP post методом через HTTPwebmethod. Но я не добился успеха в том же. Пожалуйста, порекомендуйте. Я использовал HTMLUnit в Java, но он не работает в Android.

  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();

1 Ответ

11 голосов
/ 01 июня 2010

К сожалению. Сожалею. Похоже, вы пытаетесь 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...