1、什么是HttpClient

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

HttpClient作用:

  • • 发送HTTP请求

  • • 接收响应数据

为什么要在Java程序中发送Http请求?有哪些应用场景呢?

HttpClient应用场景:

当我们在使用扫描支付、查看地图、获取验证码、查看天气等功能时

其实,应用程序本身并未实现这些功能,都是在应用程序里访问提供这些功能的服务,访问这些服务需要发送HTTP请求,并且接收响应数据,可通过HttpClient来实现。

2、HttpClient使用

HttpClient的maven坐标:

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>

HttpClient的核心API:

  • • HttpClient:Http客户端对象类型,使用该类型对象可发起Http请求。

  • • HttpClients:可认为是构建器,可创建HttpClient对象。

  • • CloseableHttpClient:实现类,实现了HttpClient接口。

  • • HttpGet:Get方式请求类型。

  • • HttpPost:Post方式请求类型。

HttpClient发送请求步骤:

  • • 创建HttpClient对象

  • • 创建Http请求对象

  • • 调用HttpClient的execute方法发送请求

3、代码演示

导入依赖

<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>

发送get请求

  1. 1. 创建HttpClient对象

  2. 2. 创建请求对象

  3. 3. 发送请求,接受响应结果

  4. 4. 解析结果

  5. 5. 关闭资源

@SpringBootTestpublicclassHttpClientTest{/*** 测试通过httpclient发送GET方式的请求*/@TestpublicvoidtestGET()throwsException{//创建httpclient对象CloseableHttpClienthttpClient=HttpClients.createDefault();//创建请求对象HttpGethttpGet=newHttpGet("http://localhost:8080/user/shop/status");//发送请求,接受响应结果CloseableHttpResponseresponse=httpClient.execute(httpGet);//获取服务端返回的状态码intstatusCode=response.getStatusLine().getStatusCode();System.out.println("服务端返回的状态码为:"+statusCode);HttpEntityentity=response.getEntity();Stringbody=EntityUtils.toString(entity);System.out.println("服务端返回的数据为:"+body);//关闭资源response.close();httpClient.close();}}

发送post请求

  1. 1. 创建HttpClient对象

  2. 2. 创建请求对象

  3. 3. 发送请求,接收响应结果

  4. 4. 解析响应结果

  5. 5. 关闭资源

/*** 测试通过httpclient发送POST方式的请求*/@TestpublicvoidtestPOST()throwsException{// 创建httpclient对象CloseableHttpClienthttpClient=HttpClients.createDefault();//创建请求对象HttpPosthttpPost=newHttpPost("http://localhost:8080/admin/employee/login");JSON json =newJSON ();json .put("username","admin");json .put("password","123456");StringEntityentity=newStringEntity(json .toString());//指定请求编码方式entity.setContentEncoding("utf-8");//数据格式entity.setContentType("application/json");httpPost.setEntity(entity);//发送请求CloseableHttpResponseresponse=httpClient.execute(httpPost);//解析返回结果intstatusCode=response.getStatusLine().getStatusCode();System.out.println("响应码为:"+statusCode);HttpEntityentity1=response.getEntity();Stringbody=EntityUtils.toString(entity1);System.out.println("响应数据为:"+body);//关闭资源response.close();httpClient.close();}
收藏 打印