一 Httpclient的简介
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的,最新的,功能丰富的支持HTTP协议的客户端变成工具包,并且他支持HTTP协议最新的版本和建议。
核心API:
HttpClient
HttpClients
CloseableHttpClient
HttpGet
HttpPost
二 HttpClient 的使用方法
导入HttpClient的依赖
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.5.13</version>
</dependency>
如过你的maven工程中导入了com.aliyun.oss这个依赖,那么你可以不用再去添加HttpClient的依赖,因为在com.aliyun.oss这个依赖中,它的底层就用到了HttpClient的依赖。
2.1 HttpClient 发送请求的步骤
1.创建HttpClient对象
2.创建Http请求对象
3.调用HttpClient的execute方法发送请求
2.2 HttpClient 发送Get的请求方式
首先我们需要用HttpClients.createDefault()方法,来创建HttpClient的对象。然后创建new 一个HttpGet的请求对象,HttpGet对象里面的参数写入你想要获取数据的地址,再去用HttpClient.execute方法去发送请求响应结果,最后去用返回回来的响应结果去获取服务端返回的状态码和数据。返回关闭资源。
public void testGET() throws IOException {
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
//创建请求对象
HttpGet httpGet = new HttpGet("http://localhost:8080/user/shop/status");
//发送请求,请求响应结果
CloseableHttpResponse response = httpClient.execute(httpGet);
//获取服务器返回的状态码
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("服务端返回成功的状态码为:"+statusCode);
HttpEntity entity = response.getEntity();
String body = EntityUtils.toString(entity);
System.out.println("服务端返回的数据为:"+body);
//关闭资源
response.close();
httpClient.close();
}
2.3HttpClient 发送POST的请求方式
Post的请求方式和上面的Get请求方式基本一致,唯一不同的是Post方法需要添加请求参数,指定编码格式和数据格式,设置请求参数我们可以用到HttPost.setEntity()这个方法。
public void testPOST() throws IOException {
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClients.createDefault();
//创建请求对象
HttpPost httpPost = new HttpPost("http://localhost:8080/admin/employee/login");
JSONObject jsonObject = new JSONObject();
jsonObject.put("username","admin");
jsonObject.put("password","123456");
StringEntity entity = new StringEntity(jsonObject.toString());
//指定请求编码方式
entity.setContentEncoding("utf-8");
//数据格式
entity.setContentType("application/json");
httpPost.setEntity(entity);
//发送请求
CloseableHttpResponse response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("响应码为:"+statusCode);
HttpEntity entity1 = response.getEntity();
String body = EntityUtils.toString(entity1);
System.out.println("响应数据为:"+ body);
//关闭资源
response.close();
httpClient.close();
}