这节介绍java爬虫的post请求, 分为带参数和不带参数
不带参数的post请求
不带参数的post请求, 和第一个案例非常相似, 关键代码如下
//1.创建httpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
//2.创建httpPost对象
HttpPost httpPost = new HttpPost("https://www.52dixiaowo.com");
try {
//3.使用httpClient发起Post请求, 并获得响应对象
CloseableHttpResponse response = httpClient.execute(httpPost);
//4.判断响应对象是否为200
if(response.getStatusLine().getStatusCode()==200){
//5.取出响应体, 并打印
HttpEntity entity = response.getEntity();
String content = EntityUtils.toString(entity,"utf-8");
System.out.println(content);
}
} catch (IOException e) {
e.printStackTrace();
}
带参数的post请求
带参数的post请求, 需要使用List封装params对象, 关键代码如下
//1.创建HttpClient对象
CloseableHttpClient client = HttpClients.createDefault();
//2.创建HttpPost对象, 配置url
HttpPost httpPost = new HttpPost("https://www.52dixiaowo.com/java/");
//3.创建List集合, 封装参数
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("s","httpGet"));
try {
//4.创建表单对象, new Entity(params,"字符集");
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params, "utf-8");
//5.设置表单的Entity对象到Post请求中
httpPost.setEntity(formEntity);
//6.使用client执行post访问
CloseableHttpResponse response = client.execute(httpPost);
//7.判断响应码是否为200
if(response.getStatusLine().getStatusCode()==200){
String content = EntityUtils.toString(response.getEntity(),"utf-8");
System.out.print(content);
}
} catch (Exception e) {
e.printStackTrace();
}
下载本节demo代码