一.HttpClient获取网页的一般流程
1.创建HttpClient客户端和HttpClientContext对象。
2.创建request请求实例,一般为GET或者POST请求。如果是POST请求,一般会携带表单参数。
3.执行HttpClient的execute(final HttpUriRequest request,final HttpContext context)方法并得到响应。
4.获取CloseableHttpResponse的内容。
5.释放资源。
二.例子
获取百度首页内容
package com.wy;
import java.io.IOException;
import org.apache.commons.io.IOUtils;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class Main {
public static void main(String args []){
//HttpClient客户端,就好比一个浏览器
CloseableHttpClient httpClient = null;
//HttpClient上下文
HttpClientContext httpClientContext = null;
//HttpClient响应
CloseableHttpResponse response = null;
String content = null;
//创建HttpClient客户端,不用多次创建该对象
httpClient = HttpClients.createDefault();
//创建默认的上下文
httpClientContext = HttpClientContext.create();
//创建一个GET请求
HttpGet getRequest = new HttpGet("http://www.baidu.cn");
try {
//执行上面getRequest请求,并得到响应
response = httpClient.execute(getRequest, httpClientContext);
//得到response状态码
int status = response.getStatusLine().getStatusCode();
System.out.println("status----" + status);
/**
* 这是Apache的一个IO工具类,将InputStream转换为String.
* 将response的InputStream流转换为String
* 这里自己手动转换也是可以的
*/
content = IOUtils.toString(response.getEntity().getContent());
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
getRequest.releaseConnection();
}
//输出网页内容
System.out.println(content);
}
}
执行结果
所需要的包(不知道怎么上传):