发送请求(要求服务端对response进行GZip压缩):
- import org.apache.commons.httpclient.HttpClient;
- import org.apache.commons.httpclient.HttpStatus;
- public class TestGzip {
- private final static String url = "http://localhost:8888/ltest.jsp";
- public static void main(String[] args) throws Exception{
- HttpClient http = new HttpClient();
- CustomGetMethod get = new CustomGetMethod(url);
- //添加头信息告诉服务端可以对Response进行GZip压缩
- get.setRequestHeader("Accept-Encoding", "gzip, deflate");
- try {
- int statusCode = http.executeMethod(get);
- if (statusCode != HttpStatus.SC_OK) {
- System.err.println("Method failed: "
- + get.getStatusLine());
- }
- //打印解压后的返回信息
- System.out.println(get.getResponseBodyAsString());
- } catch (Exception e) {
- System.err.println("页面无法访问");
- e.printStackTrace();
- } finally {
- get.releaseConnection();
- }
- }
- }
下面是CustomGetMethod.java的内容,getResponseBodyAsString()方法被重写,加入了解压功能
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.util.zip.GZIPInputStream;
- public class CustomGetMethod extends org.apache.commons.httpclient.methods.GetMethod{
- public CustomGetMethod(String uri) {
- super(uri);
- }
- /**
- * Get response as string whether response is GZipped or not
- *
- * @return
- * @throws IOException
- */
- @Override
- public String getResponseBodyAsString() throws IOException {
- GZIPInputStream gzin;
- if (getResponseBody() != null || getResponseStream() != null) {
- if(getResponseHeader("Content-Encoding") != null
- && getResponseHeader("Content-Encoding").getValue().toLowerCase().indexOf("gzip") > -1) {
- //For GZip response
- InputStream is = getResponseBodyAsStream();
- gzin = new GZIPInputStream(is);
- InputStreamReader isr = new InputStreamReader(gzin, getResponseCharSet());
- java.io.BufferedReader br = new java.io.BufferedReader(isr);
- StringBuffer sb = new StringBuffer();
- String tempbf;
- while ((tempbf = br.readLine()) != null) {
- sb.append(tempbf);
- sb.append("\r\n");
- }
- isr.close();
- gzin.close();
- return sb.toString();
- } else {
- //For deflate response
- return super.getResponseBodyAsString();
- }
- } else {
- return null;
- }
- }
- }
相关推荐
在这个例子中,我们设置了HttpClientHandler的`AutomaticDecompression`属性为`DecompressionMethods.GZip`,这样HttpClient就会自动处理GZip格式的压缩响应。 二、HttpClientHandler和DecompressionMethods枚举 ...
在IT行业中,Delphi是一种流行的面向对象的编程...总之,这个Delphi的GZIP解压示例源代码是一个实用的学习工具,它展示了在Delphi中如何利用第三方库进行文件解压缩,对于提升开发者处理压缩数据的能力具有实际意义。
在使用Apache HttpClient库进行HTTP请求时,可能会遇到`HttpClient`返回`response`为`null`的问题,这通常意味着请求没有成功地完成或者某些资源没有被正确处理。在本篇文章中,我们将深入探讨这个问题的原因和解决...
当HttpClient发送请求时,它可以指定接受GZIP压缩的响应,服务器在返回数据时会对数据进行压缩,HttpClient再负责解压。这不仅降低了网络带宽的使用,也提高了数据传输的效率。 `HttpClient.cpp`很可能是实现...
使用HttpClient4.5实现https请求忽略SSL证书验证工具类
### HttpClient 实现文件下载 #### 一、简介与原理 在Java开发中,经常会遇到需要通过HTTP协议来获取网络资源的需求,例如从Web服务器下载文件。Apache HttpClient 是一个用于发送HTTP请求的Java类库,它提供了...
通过HttpClient实现远程下载,本例子通过java代码实现
这个压缩包"安卓文件下载上传解压相关-Android使用HttpClient实现上传下载功能并监控进度.rar"提供了使用HttpClient实现这些功能的示例代码。HttpClient是一个Java库,它允许开发者创建HTTP请求,支持包括下载和上传...
HttpClient库广泛应用于构建Java应用程序,尤其是那些需要与Web服务进行交互的程序。本篇文章将详细介绍如何使用HttpClient实现WebService客户端。 首先,我们需要了解WebService的基本概念。WebService是一种基于...
本篇文章将深入探讨如何利用HttpClient实现这些功能,并提供实战代码示例。 首先,让我们了解GET和POST两种HTTP请求方法的基本概念。GET是HTTP协议中最常见的请求方式,用于获取服务器上的资源,所有数据都包含在...
在Web开发中,Gzip通常被服务器用于对HTML、CSS、JavaScript等静态资源进行压缩,然后再发送到客户端(如Windows Phone设备),从而降低网络带宽消耗,加快页面加载速度。 在Windows Phone平台上,开发人员可能需要...
同样,我们可以实现`HttpResponse`的监听器,当数据被接收时,计算下载进度并更新UI。注意,为了确保数据的完整性和避免内存溢出,我们通常会将接收到的数据写入到文件流中。 下面是一个简化的上传示例: ```java ...
通过熟练掌握HttpClient的使用,后台程序员可以更高效地实现与远程服务器的通信,特别是处理JSON数据的场景。 总的来说,"HTTPclient.jar"包含了实现HTTP请求和响应处理所需的所有类和接口。结合JSON解析库,后台...
本篇文章将详细介绍如何使用Java的HttpClient实现异步请求资源。 首先,让我们了解什么是异步请求。在同步请求中,调用一个API或发送一个HTTP请求后,程序会等待响应返回,然后继续执行后续代码。而异步请求则不同...
GZIP压缩的工作原理是在客户端请求网页后,由服务器端将网页文件压缩后再发送给客户端,客户端接收到压缩后的文件后,由浏览器进行解压并显示页面内容。这种方式不仅可以减少传输的数据量,而且还能对动态生成的内容...
`Httpclient` 是一个强大的工具,可以实现跨项目间的数据通信。本文将深入探讨如何使用 `Httpclient` 进行HTTP请求,实现不同项目之间的数据交换。 `Httpclient` 是Apache HttpClient库,它为Java开发者提供了全面...
- 在实际开发中,HttpClient常与其他工具配合使用,如Apache Commons IO库进行文件操作,或者使用JUnit进行单元测试。 9. **最佳实践**: - 关闭资源:请求完成后记得关闭响应实体和连接,避免内存泄漏。 - 使用...
在Web开发中,HttpClient常常被用于网页抓取、API调用和其他网络通信任务。本篇文章将深入探讨重新封装的HttpClient类,以及如何利用它进行高效且灵活的网络请求。 首先,我们来看一下`HttpClient`类的基本用法。...
这个样例项目旨在帮助初学者理解如何在Java中使用HttpClient来与Web服务器进行交互。 在JavaHttpProject这个项目中,你可以找到以下关键知识点: 1. **HttpClient的创建**:首先,你需要创建一个HttpClient实例。...