首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

HttpClient压缩传输的代码,半数以上都不靠谱,apache httpclient 官网的最靠谱,亲测

2012-12-23 
HttpClient压缩传输的代码,大部分都不靠谱,apache httpclient 官网的最靠谱,亲测!?HttpClient压缩传输的代

HttpClient压缩传输的代码,大部分都不靠谱,apache httpclient 官网的最靠谱,亲测!

?

HttpClient压缩传输的代码,大部分都不靠谱,apache httpclient 官网的最靠谱,亲测!

------------------------------------------------------------------

/*

?* ====================================================================

?* Licensed to the Apache Software Foundation (ASF) under one

?* or more contributor license agreements. ?See the NOTICE file

?* distributed with this work for additional information

?* regarding copyright ownership. ?The ASF licenses this file

?* to you under the Apache License, Version 2.0 (the

?* "License"); you may not use this file except in compliance

?* with the License. ?You may obtain a copy of the License at

?*

?* ? http://www.apache.org/licenses/LICENSE-2.0

?*

?* Unless required by applicable law or agreed to in writing,

?* software distributed under the License is distributed on an

?* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

?* KIND, either express or implied. ?See the License for the

?* specific language governing permissions and limitations

?* under the License.

?* ====================================================================

?*

?* This software consists of voluntary contributions made by many

?* individuals on behalf of the Apache Software Foundation. ?For more

?* information on the Apache Software Foundation, please see

?* <http://www.apache.org/>.

?*

?*/

?

package org.apache.http.examples.client;

?

import java.io.IOException;

?

import org.apache.http.Header;

import org.apache.http.HeaderElement;

import org.apache.http.HttpEntity;

import org.apache.http.HttpException;

import org.apache.http.HttpRequest;

import org.apache.http.HttpRequestInterceptor;

import org.apache.http.HttpResponse;

import org.apache.http.HttpResponseInterceptor;

import org.apache.http.client.entity.GzipDecompressingEntity;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.protocol.HttpContext;

import org.apache.http.util.EntityUtils;

?

/**

?* Demonstration of the use of protocol interceptors to transparently

?* modify properties of HTTP messages sent / received by the HTTP client.

?* <p/>

?* In this particular case HTTP client is made capable of transparent content

?* GZIP compression by adding two protocol interceptors: a request interceptor

?* that adds 'Accept-Encoding: gzip' header to all outgoing requests and

?* a response interceptor that automatically expands compressed response

?* entities by wrapping them with a uncompressing decorator class. The use of

?* protocol interceptors makes content compression completely transparent to

?* the consumer of the {@link org.apache.http.client.HttpClient HttpClient}

?* interface.

?*/

public class ClientGZipContentCompression {

?

? ? public final static void main(String[] args) throws Exception {

? ? ? ? DefaultHttpClient httpclient = new DefaultHttpClient();

? ? ? ? try {

? ? ? ? ? ? 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();

? ? ? ? ? ? ? ? ? ? if (entity != null) {

? ? ? ? ? ? ? ? ? ? ? ? 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;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

?

? ? ? ? ? ? });

?

?

?

? ? ? ? ? ? HttpGet httpget = new HttpGet("http://cppmule.zapto.org/acr/acrphone-service/area/cities");

?

? ? ? ? ? ? // Execute HTTP request

? ? ? ? ? ? System.out.println("executing request " + httpget.getURI());

? ? ? ? ? ? HttpResponse response = httpclient.execute(httpget);

?

? ? ? ? ? ? System.out.println("----------------------------------------");

? ? ? ? ? ? System.out.println(response.getStatusLine());

? ? ? ? ? ? System.out.println(response.getLastHeader("Content-Encoding"));

? ? ? ? ? ? System.out.println(response.getLastHeader("Content-Length"));

? ? ? ? ? ? System.out.println("----------------------------------------");

?

? ? ? ? ? ? HttpEntity entity = response.getEntity();

?

? ? ? ? ? ? if (entity != null) {

? ? ? ? ? ? ? ? String content = EntityUtils.toString(entity);

? ? ? ? ? ? ? ? System.out.println(content);

? ? ? ? ? ? ? ? System.out.println("----------------------------------------");

? ? ? ? ? ? ? ? System.out.println("Uncompressed size: "+content.length());

? ? ? ? ? ? }

?

? ? ? ? } finally {

? ? ? ? ? ? // When HttpClient instance is no longer needed,

? ? ? ? ? ? // shut down the connection manager to ensure

? ? ? ? ? ? // immediate deallocation of all system resources

? ? ? ? ? ? httpclient.getConnectionManager().shutdown();

? ? ? ? }

? ? }

?

}


?

热点排行