我想模拟的是点击按钮" 7"使用HttpClient POST,然后使用JSoup检索计算器的输入屏幕的值,并将其设置在Android应用程序的编辑文本框中。代码运行正常,没有错误,但我得到一个空白条目。
我使用了Apache库的HttpClient。这是代码
// Title AsyncTask
private class Title extends AsyncTask<Void, Void, Void> {
String title, response1;
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
try {
makePostRequest();
//postData("");
// Connect to the web site
Document document = Jsoup.connect(url).get();
// Get the html document title
title = document.title();
Elements E1 = document.select("input[name=Input]");
Element E2 = E1.first();
title = E2.val();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Set title into TextView
EditText txttitle = (EditText) findViewById(R.id.editText);
txttitle.setText(title);
mProgressDialog.dismiss();
}
private void makePostRequest() {
HttpClient httpClient = new DefaultHttpClient();
// replace with your url
HttpPost httpPost = new HttpPost(url);
//Post Data
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1);
nameValuePair.add(new BasicNameValuePair("seven",""));
//Encoding POST data
try {
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
} catch (UnsupportedEncodingException e) {
// log exception
e.printStackTrace();
}
//making POST request.
try {
HttpResponse response = httpClient.execute(httpPost);
// write response to log
Log.d("Http Post Response:", response.toString());
} catch (ClientProtocolException e) {
// Log exception
e.printStackTrace();
} catch (IOException e) {
// Log exception
e.printStackTrace();
}
}
}
有谁知道我在这里做错了什么?该网站不是我的,因此我无法添加JavaScript。我是Android和Java编程的新手。
如果我能提供我可能错过的任何其他信息,请告诉我。
谢谢。
答案 0 :(得分:0)
您可以使用浏览器监控网络。在Chrome快捷方式是 ctrl + shift + i 。选择网络选项卡,执行所需操作并查看正在发送的http请求。在您的情况下,没有请求被发送,因为该计算器纯粹在浏览器中工作并且不与服务器建立连接。这意味着你需要解释javascript。这样的工作由名为 Selenium webdriver 的库提供。它是一个无头的Web浏览器,您可以从代码中进行控制。试试吧。
编辑: Selenium在Android上不起作用。 Android内置视图,您可以使用浏览器--WebView。它可以运行javascript函数。你可以做javascript调用。 Look here和here。祝你好运