httpclient封装获取响应实体_基于springboot的httpclient封装

本文介绍了在Java中使用HttpClient进行HTTP通信的基本步骤,包括创建HttpClient对象、构造Http请求、执行请求并解析响应、处理重定向、字符编码以及Cookie策略。还展示了如何在SpringBoot项目中封装HttpClient进行接口模拟请求的代码实现,并强调了资源释放的重要性。
摘要由CSDN通过智能技术生成

一、使用场景

目前C/S还是B/S结构的应用程序, HTTP 应该是最为广泛使用的协议了。在 Java 平台上,Java 标准库提供了 一个HttpURLConnection 类来支持 HTTP 通讯。不过 HttpURLConnection 本身的 API 不够友好,所提供的功能也有限。httpClien是一个实现http协议很多操作功能的组件,并且它支持 HTTP 协议最新的版本和建议,现在Android已经成功的集成了HttpClient。另外,最新由Square 公司开源的 OkHttp 据说能提供更高效率的http连接,支持GZIP 压缩和 HTTP 响应缓存功能,在原理上应该是大同小异的。

二、httpclient的使用步骤

利用httpclient去访问接口的步骤一般是:

1. 创建HttpClient对象。2. 构造Http 请求对象。3. 执行HttpClient对象的execute方法,将Http请求对象作为该方法的参数。4. 读取execute方法返回的HttpResponse结果并解析。5、释放连接。整个过程是不是与我们平时在浏览器上访问类似呢。唯一区别是不能执行HTTP页面中签入嵌入的JS代码,自然也不会对页面内容进行任何解析、处理,这些都是需要开发人员来完成的。在以上代码中,httpclient的初始化没有看到任何参数设置,其实是在它的构造函数里调用了接口,并设置了默认值,如下包含协议版本、客户端引擎、cookie策略等,如果要自己设置,可以通过它的成员变量httpClientParams对象进行设置。

1、关于重定向。

http多种状态已经在HttpStatus这个类中定义好,其中重定向 根据RFC2616中对自动转向的定义,主要有两种:301和302。301表示永久的移走

在使用Spring Boot中封装HttpClient时,可以使用Apache HttpClient库。以下是一个简单的封装示例: 1. 添加依赖 首先,在Maven或Gradle项目的构建文件中添加Apache HttpClient的依赖: Maven: ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> ``` Gradle: ```groovy implementation 'org.apache.httpcomponents:httpclient:4.5.13' ``` 2. 创建Http请求封装类 创建一个名为HttpClientUtil的Java类,用于封装HttpClient的常用操作: ```java import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; public class HttpClientUtil { private CloseableHttpClient httpClient; public HttpClientUtil() { httpClient = HttpClientBuilder.create().build(); } public String doGet(String url) throws IOException { HttpGet request = new HttpGet(url); return executeRequest(request); } public String doPost(String url, Map<String, String> params) throws IOException { HttpPost request = new HttpPost(url); if (params != null && !params.isEmpty()) { List<NameValuePair> nameValuePairs = new ArrayList<>(); for (Map.Entry<String, String> entry : params.entrySet()) { nameValuePairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } request.setEntity(new UrlEncodedFormEntity(nameValuePairs)); } return executeRequest(request); } private String executeRequest(HttpRequestBase request) throws IOException { try (CloseableHttpResponse response = httpClient.execute(request)) { HttpEntity entity = response.getEntity(); if (entity != null) { return EntityUtils.toString(entity); } } return null; } } ``` 3. 使用封装类 现在,你可以在Spring Boot的任何组件中使用HttpClientUtil类进行HTTP请求。例如,在一个Controller中使用: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { private HttpClientUtil httpClientUtil; public MyController(HttpClientUtil httpClientUtil) { this.httpClientUtil = httpClientUtil; } @GetMapping("/api/request") public String makeRequest() { try { String response = httpClientUtil.doGet("https://example.com"); return response; } catch (IOException e) { e.printStackTrace(); return "Error"; } } } ``` 以上示例演示了如何封装HttpClient并在Spring Boot应用程序中使用它进行GET请求。你可以根据自己的需求,进一步扩展封装类,支持更多的HTTP方法和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值