简介:
HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。
使用方法:
1.创建客户端CloseableHttpClient
2.创建请求方法的实例,并指定URL
如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3.如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数,可以通过setHeader("content-type","application/json;charset=utf-8")方法来设置请求参数类型为JSON类型,
4.发送请求,调用HttpClient.execute(请求实例的对象),返回的是一个Response对象
5.调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;
调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容.程序可通过该对象获取服务器的响应内容
6.释放资源 无论执行方法是否成功,都必须释放连接.
GET请求实例
@Test
public void testDemo01(){
try {
//1 创建Httpclient对象,相当于打开了浏览器
CloseableHttpClient httpClient = HttpClients.createDefault();
//2 确定请求方式和请求路径,相当于在浏览器输入地址
HttpGet httpGet = new HttpGet("http://localhost:9090/user");
//3 执行请求并获取响应,相当于敲完地址后按下回车。
CloseableHttpResponse response = httpClient.execute(httpGet);
// 4 判断状态码是否为200
if(response.getStatusLine().getStatusCode() == 200){
// 5 获得响应体内容
String str = EntityUtils.toString(response.getEntity());
System.out.println(str);
}
response.close();
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
POST请求实例
public User Testlogin(User user){
CloseableHttpClient httpClient= null;
CloseableHttpResponse response = null;
try {
//1.创建客户端 HttpClient
httpClient = HttpClients.createDefault();
//2.创建post请求实例
HttpPost httpPost = new HttpPost("http://localhost:9090/user/login");
//2.1 设置请求类型为json类型
httpPost.setHeader("content-type","application/json;charset=utf-8");
//2.2 设置请求参数(请求体)
String str = JSON.toJSONString(user);
httpPost.setEntity(new StringEntity(str,"utf-8"));
//3.发送请求
response = httpClient.execute(httpPost);
//4.判断响应状态码为200
if(response.getStatusLine().getStatusCode() == 200){
//5.获取响应体内容
String string = EntityUtils.toString(response.getEntity());
User loginUser = JSON.parseObject(string,User.class);
return loginUser;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
//6.释放资源
response.close();
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}