要在Android中获取Web表单中的隐藏值并进行POST请求,可以使用以下步骤和代码示例:
Document doc = Jsoup.connect(url).get();
Element hiddenField = doc.select("input[type=hidden]").first();
String hiddenValue = hiddenField.attr("value");
String postUrl = "your_post_url";
HttpPost httpPost = new HttpPost(postUrl);
List params = new ArrayList<>();
params.add(new BasicNameValuePair("hiddenField", hiddenValue));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params);
httpPost.setEntity(formEntity);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(httpPost);
这里假设您已经包含了Apache HttpClient库。
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
String responseBody = stringBuilder.toString();
这将把响应的内容读取到一个字符串中。
完整的示例代码如下:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
public class Main {
public static void main(String[] args) {
try {
// Step 1: Parse web page and get hidden field value
String url = "your_web_page_url";
Document doc = Jsoup.connect(url).get();
Element hiddenField = doc.select("input[type=hidden]").first();
String hiddenValue = hiddenField.attr("value");
// Step 2: Build POST request and add hidden field value
String postUrl = "your_post_url";
HttpPost httpPost = new HttpPost(postUrl);
List params = new ArrayList<>();
params.add(new BasicNameValuePair("hiddenField", hiddenValue));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params);
httpPost.setEntity(formEntity);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = httpClient.execute(httpPost);
// Step 3: Handle POST request response
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
String responseBody = stringBuilder.toString();
// Do something with the response body
System.out.println(responseBody);
} catch (Exception e) {
e.printStackTrace();
}
}
}
请注意,上述代码示例仅用于说明目的,并且可能需要根据您的实际情况进行适当的修改。