作者归档

《HttpClient官方文档》第六章 HTTP 缓存

原文链接 译者[xuheyang]

第六章. HTTP缓存

6.1. 通用概念

HttpClient Cache 提供了用HttpClient(等效浏览器缓存的Java实现)来兼容HTTP / 1.1的缓存层。实现遵循责任链模式,HttpClient缓存的实现类可以替代默认无缓存的HttpClient;完全可以通过缓存实现的请求将不会触发实际的原始请求。在可以的情况下,使用GETs条件If-Modified-Since和/or If-None-Match请求头,会自动验证旧的缓存项。HTTP / 1.1缓存一般被设计成语义透明的,也就是说,缓存不会改变客户端和服务器端的请求响应之间交换的意义。因此,向一个现有的客户端-服务器的关系中添加HttpClient是安全的。尽管从一个HTTP协议的角度来看,缓存模块是客户端的一部分,实现的目标是满足基于透明缓存代理的要求。最后,缓存HttpClient包括支持RFC 5861(stale-if-error和stale-while-revalidate)指定的cache – control扩展。 当缓存HttpClient执行一个请求时,它会通过以下流程:

阅读全文

《HttpClient官方文档》1.6 中止请求

1.6. 中止请求

在某些情况下,由于服务器端的高负载或者客户端存在过多的并发请求问题,HTTP请求不能在预期时间内执行完毕。 遇到这种情况,可能需要提前中止请求并开启阻塞在I/O操作的线程。 通过HttpUriRequest#abort()方法,可以在任何阶段中止由HttpClient执行的HTTP请求。

阅读全文

《HttpClient官方文档》1.5 异常处理

1.5. 异常处理

HTTP协议处理器会抛出两种类型的异常: 一种是I/O失败的情况下产生的java.io.IOException,比如套接字超时或重置。 另一种是发送HTTP信号失败情况下的HttpException,比如违反HTTP协议。 通常情况,我们认为I/O错误是非致命且可恢复的错误,而HTTP协议错误则是致命且不能自动恢复的。 请注意,HttpClient将HttpException重新封装成一个IOException的子类ClientProtocolException,这样用户就可以在一个catch代码块中同时处理I/O错误和违反协议的错误。 阅读全文

《HttpClient官方文档》1.7. Redirect handling 翻译

1.7. 重定向处理

HttpClient能够处理所有类型的自动重定向,除了被那些需要用户干预被HTTP规范明确禁止的。考虑到根据HTTP规范中其他被转为GET请求的POST和PUT请求的重定向(状态码303),可以使用一个自定义的重定向策略来降低HTTP规范强制规定的POST方法自动重定向的限制。

阅读全文

return top