首先创建一个client对象:
DefaultHttpClient httpclient = new DefaultHttpClient();
然后为这个client添加一个request拦截器和response拦截器
httpclient.addRequestInterceptor(new HttpRequestInterceptor() {
public void process(final HttpRequest request,
final HttpContext context) throws HttpException,
IOException {
if (!request.containsHeader("Accept-Encoding")) {
request.addHeader("Accept-Encoding", "gzip");
}
}
});
httpclient.addResponseInterceptor(new HttpResponseInterceptor() {
public void process(final HttpResponse response,
final HttpContext context) throws HttpException,
IOException {
HttpEntity entity = response.getEntity();
Header ceheader = entity.getContentEncoding();
if (ceheader != null) {
HeaderElement[] codecs = ceheader.getElements();
for (int i = 0; i < codecs.length; i++) {
if (codecs[i].getName().equalsIgnoreCase("gzip")) {
response.setEntity(new GzipDecompressingEntity(
response.getEntity()));
return;
}
}
}
}
});
然后访问会的内容就能正常显示了
分享到:
相关推荐
在Android开发中,有时我们需要从网络上获取网页的HTML源代码,这通常涉及到网络编程。本例子源码展示了如何利用Apache HttpClient库来实现这一功能,同时也对比了另一种常见的网络访问方式——URLConnection。以下...
2. 发送HTTP请求,例如GET请求获取网页内容,POST请求提交表单数据。 3. 处理服务器的响应,包括读取响应状态码、头部信息和响应体。 4. 如果响应体被GZIP压缩,使用GZipHelper类或方法进行解压缩。 5. 错误处理和...
- **HttpEntity**:响应体的抽象,可以通过HttpEntity.getContentType()获取MIME类型,HttpEntity.getContent()读取内容。 3. **请求和响应头**: - 可以通过HttpUriRequest.setHeader()和HttpResponse....
通常,这会涉及到读取GZIP文件,调用解压缩函数,将解压缩的数据写入新的文件,以及处理可能出现的错误。 通过阅读和理解源代码,你可以学习到如何处理二进制数据流,如何使用Delphi的内存流类(如TMemoryStream)...
- **压缩传输**:HttpClient支持GZIP压缩,可以减少网络传输的数据量。 - **缓存策略**:利用HttpCache可以缓存HTTP响应,减少不必要的网络请求。 8. **错误处理与调试** - **异常处理**:HttpClient可能会抛出...
10. **性能优化**:HttpClient4.2.1进行了多项性能优化,例如支持GZIP压缩、减少内存占用等,以提升整体性能。 综上所述,HttpClient4.2.1是一个强大且灵活的HTTP客户端库,适用于各种Java应用,尤其是需要大量HTTP...
9. **性能优化**:HttpClient有许多性能优化选项,例如禁用DNS缓存、使用线程安全的Cookie存储、开启GZIP压缩等。 10. **版本兼容性**:HttpClient有多个版本,从较早的3.x到较新的4.x和5.x。每个版本都有其特点和...
HTTP Core还支持传输编码(如chunked编码),内容编码(如gzip压缩)和HTTP连接的复用,这极大地提高了网络通信的效率。 **httpclient-4.2.5.jar** 是HttpClient的主要实现库,它基于HTTP Core构建,提供了更高级别...
### WebApi系列-通过HttpClient来调用WebApi接口 #### 一、概述 在现代Web开发中,Web API已经成为一种非常流行的模式,用于提供服务端与客户端之间的数据交互。随着.NET Framework以及.NET Core的发展,微软提供...
6. **处理响应**:获取`HttpResponse`对象,读取响应状态码、头部信息和响应体内容。 7. **释放资源**:在完成请求处理后,记得关闭连接和释放HttpClient资源。 学习HttpClient库可以帮助开发者更有效地编写网络...
OkHttp的特点包括连接池、响应缓存、自动处理重定向和GZIP压缩等,这些特性使得它在性能和速度上优于标准的HttpURLConnection。 4. **HttpClient**: HttpClient是Apache提供的一个Java库,用于执行HTTP请求。虽然...
在Android开发中,网络通信是应用的核心功能之一,而`Android Asynchronous HTTPClient`(也称为AsyncHttpClient)是一个流行的库,用于实现异步HTTP请求,它使得开发者可以在不阻塞主线程的情况下执行网络操作,...
- **支持gzip压缩**:自动解压服务器返回的gzip压缩内容,减少数据传输量。 - **缓存支持**:可以配置本地缓存策略,提高请求速度和减少网络流量。 - **支持Cookie**:管理Cookie,维持用户会话。 - **自定义请求头*...
9. **编码与解码**:HttpClient内置了对URL编码和解码的支持,以及对请求和响应的编码和解码处理,如GZIP压缩和解压缩。 10. **国际化与本地化**:HttpClient允许开发者指定请求和响应的字符集,以处理不同的语言...
通常,我们可以使用`java.net.URL`类来表示一个网址,然后通过`openStream()`方法获取网页内容的输入流。例如: ```java try { String urlString = "http://localhost:8080/cms/"; URL url = new URL(urlString);...
- 使用GZIP压缩减小传输数据量。 在提供的标签"源码"和"工具"中,可能意味着文章还讨论了HttpClient的内部工作原理,或者提供了使用HttpClient与其他工具集成的示例。在lib文件夹中,可能包含了用于测试或演示...
此外,HTTPClient库还提供了对Cookie、HTTP缓存、GZIP压缩、多部分上传等功能的支持。在处理大量HTTP请求时,理解并熟练使用HTTPClient可以帮助你编写高效、健壮的代码。为了更好地利用这个库,建议阅读官方文档和...
HTTPclient支持自定义编码解码器,如GZIP压缩,这在处理大体积数据或者特定编码格式时非常有用。 10. **与其他框架的集成**: HTTPclient可以轻松地与Spring、Apache Camel等框架集成,为复杂的企业级应用提供...