当前位置: 首页 > news >正文

CloseableHttpResponse 类(代表一个可关闭的 HTTP 响应)

        CloseableHttpResponse 类是 Apache HttpClient 库中的一个类,代表一个可关闭的 HTTP 响应。当你使用 HttpClient 发送请求时,你会得到一个 CloseableHttpResponse 实例,它包含了服务器的响应数据和状态。处理完响应后,你应该关闭这个响应对象来释放底层的系统资源。

常用方法

  1. 获取响应实体

    • HttpEntity getEntity():返回响应实体,可能包含二进制数据或文本数据。
  2. 获取状态行

    • StatusLine getStatusLine():返回响应的状态行,包含 HTTP 版本和状态码。
  3. 获取所有头信息

    • Header[] getAllHeaders():返回响应的所有头信息。
  4. 获取特定的头信息

    • Header getFirstHeader(String name):返回指定名称的第一个头信息。
    • Header getLastHeader(String name):返回指定名称的最后一个头信息。
  5. 迭代头信息

    • HeaderIterator headerIterator():返回一个头信息迭代器。
    • HeaderIterator headerIterator(String name):返回指定名称的头信息迭代器。
  6. 关闭响应

    • void close():关闭响应并释放底层资源。

代码案例

案例 1:使用 CloseableHttpResponse 获取和处理响应实体。

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.HttpEntity;
import org.apache.http.StatusLine;
import org.apache.http.util.EntityUtils;CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://example.com");try (CloseableHttpResponse response = httpClient.execute(httpGet)) {// 获取状态线对象,可以获取状态码和HTTP版本StatusLine statusLine = response.getStatusLine();System.out.println("HTTP version: " + statusLine.getProtocolVersion());System.out.println("Status code: " + statusLine.getStatusCode());// 获取响应实体HttpEntity entity = response.getEntity();if (entity != null) {// 将响应实体转换为字符串String result = EntityUtils.toString(entity);System.out.println(result);}
} catch (Exception e) {e.printStackTrace();
} finally {// 确保关闭 httpClient 资源try {httpClient.close();} catch (Exception e) {e.printStackTrace();}
}

        在这个例子中,我们创建了一个 HttpGet 对象来发送 GET 请求,然后执行请求并处理响应。我们打印了 HTTP 版本和状态码,并将响应实体转换为字符串。

案例 2:使用 CloseableHttpResponse 获取和处理特定的响应头。

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.Header;CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://example.com");try (CloseableHttpResponse response = httpClient.execute(httpGet)) {// 获取并打印 'Content-Type' 头信息Header contentTypeHeader = response.getFirstHeader("Content-Type");if (contentTypeHeader != null) {System.out.println("Content-Type: " + contentTypeHeader.getValue());}
} catch (Exception e) {e.printStackTrace();
} finally {// 确保关闭 httpClient 资源try {httpClient.close();} catch (Exception e) {e.printStackTrace();}
}

        在这个例子中,我们获取了响应的第一个 Content-Type 头信息并打印了它的值。

        在使用 CloseableHttpResponse 时,非常重要的一点是确保在处理完响应后调用 close() 方法来释放系统资源。从 Apache HttpClient 4.3.6 开始,可以使用 try-with-resources 语句来自动管理资源,如案例 1 所示。这确保了即使在发生异常的情况下,响应也会被正确关闭。

http://www.lryc.cn/news/458454.html

相关文章:

  • C语言编程规范及命名规则
  • Pika 1.5 - Pika Labs最新推出的AI视频生成工具
  • Elon Musk 正式揭晓了特斯拉的Robotaxi和Robovan,这两款自动驾驶新车型成为发布会上的焦点
  • 博客摘录「 springboot+netty+mqtt服务端实现」2024年10月11日
  • Docker小白入门笔记
  • Unity 如何在 iOS 新增键盘 KeyCode 响应事件
  • pytorh学习笔记——波士顿房价预测
  • 让AI像人一样思考和使用工具,reAct机制详解
  • Linux系列-常见的指令(二)
  • Leecode刷题之路第17天之电话号码的字母组合
  • 2023牛客暑期多校训练营3(题解)
  • Magnum IO
  • Flink job的提交流程
  • git操作pull的时候出现冲突怎么解决
  • Sentinel 1.80(CVE-2021-44139)
  • 黑马程序员C++提高编程学习笔记
  • 力扣第1题:两数之和(图解版)
  • aws(学习笔记第三课) AWS CloudFormation
  • 浅学React和JSX
  • React 为什么 “虚拟 DOM 顶部有很多 provider“?
  • 忘记了 MySQL 8.0 的 root 密码,应该怎么办?
  • Promise.reject()
  • 大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
  • 云手机与传统手机的区别是什么?
  • 微知-Bluefield DPU命名规则各字段作用?BF2 BF3全系列命名大全
  • Ubuntu 上使用 Nginx 实现反向代理并启用 HTTPS(详细教程)
  • 2. 继承Mono的单例模式基类
  • 数据治理:制造企业转型的关键要素与战略需求
  • FastAPI 基本路由
  • Python库matplotlib之六