1. HttpClient介绍
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
2. HttpClient作用:
- 发送HTTP请求
- 接收响应数据
3. 核心API
- HttpClient
- HttpClients
- CloseableHttpClient
- HttpGet
- HttpPost
4. 发送请求步骤
- 创建HttpClient对象
- 创建Http请求对象
- 调用HttpClient的execute方法发送请求
5. HttpClient的使用方式
- 在pom.xml文件中导入HttpClient的maven坐标
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency>
- 使用案例
@SpringBootTest public class HttpClientTest { /* * 测试通过httpclient发送GET方式的请求 * */ @Test public void testGET() throws Exception { //创建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(); } /* * 测试通过httpclient发送POST方式的请求 * */ @Test public void testPOST() throws Exception { //创建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(); } }