介绍:
HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
这里阿里云的oss依赖底层是httpclient,所以这里不再重复导入
首先我们在已有项目的测试类中创建一个HttpClientTest测试类
@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(); } }
包含了两个测试方法:testGET和testPOST,用于演示如何使用Apache HttpClient库发送HTTP GET和POST请求,并处理响应。下面是对这两个测试方法的详细解释:
1. testGET 方法
创建HttpClient对象:首先,通过HttpClients.createDefault()方法创建了一个CloseableHttpClient实例,这是Apache HttpClient库提供的用于发送HTTP请求的主要类。
创建HttpGet请求对象:然后,通过newHttpGet("http://localhost:8080/user/shop/status")创建了一个HttpGet实例,指定了要请求的URL地址。
发送请求并处理响应:使用httpClient.execute(httpGet)发送GET请求,并获取CloseableHttpResponse实例来接收响应。通过response.getStatusLine().getStatusCode()获取HTTP状态码,并打印出来。同时,使用EntityUtils.toString(response.getEntity())将响应体转换为字符串,并打印出来。
关闭资源:最后,关闭CloseableHttpResponse和CloseableHttpClient资源,以释放系统资源。
2. testPOST 方法
创建HttpClient对象:与testGET方法相同,首先创建了一个CloseableHttpClient实例。
创建HttpPost请求对象:通过new HttpPost("http://localhost:8080/admin/employee/login")创建了一个HttpPost实例,指定了要请求的URL地址。
准备POST请求体:使用JSONObject创建了一个包含用户名和密码的JSON对象,并将其转换为字符串。然后,使用StringEntity包装这个字符串,并设置请求的内容类型为application/json和编码方式为utf-8。最后,将这个StringEntity设置为HttpPost请求的请求体。
发送请求并处理响应:与testGET方法类似,使用httpClient.execute(httpPost)发送POST请求,并处理响应。获取HTTP状态码和响应体,并打印出来。
关闭资源:最后,同样关闭CloseableHttpResponse和CloseableHttpClient资源。
总结
这个测试类展示了如何在Java中使用Apache HttpClient库发送HTTP GET和POST请求,并处理响应。这对于测试Web服务的接口非常有用,尤其是在进行集成测试或端到端测试时。需要注意的是,这个测试类假设你已经有一个正在运行的Spring Boot应用,该应用监听在localhost:8080上,并且具有/user/shop/status和/admin/employee/login这两个端点。