gpt4 book ai didi

java - Android/Java 中使用 GZip 编码的 HttpGet

转载 作者:行者123 更新时间:2023-11-30 03:59:51 26 4
gpt4 key购买 nike

我在我的服务器上运行 MVC 4,为了为我的用户保存一些数据,我想我应该启用 GZip 编码,为此我简单地使用了:

(C#)

Response.AddHeader("Content-Encoding", "gzip");
Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress);

在我的 Android 应用程序中,我使用:

(Java)

String response = "";
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();

BufferedReader buffer = new BufferedReader(
new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}

} catch (Exception e) {
e.printStackTrace();
}
return response;

当我使用 GZip 时,Java 代码会崩溃并导致 GC 运行,我从来没有足够的耐心等待它返回。

当我从服务器上取下 GZip 时,它运行得非常好。获取响应的函数立即返回,没有任何问题。

我尝试将其添加到java代码中:

httpGet.addHeader("Accept-Encoding", "gzip");

没有成功。

问题是,有什么我没有得到的吗?如果使用 GZip,我可以不将响应放入流中吗?我是否打算使用该流并在之后解压缩它?

我做错了什么?

最佳答案

而不是使用

DefaultHttpClient client = new DefaultHttpClient();

你可以使用

ContentEncodingHttpClient client = new ContentEncodingHttpClient();

它是 DefaultHttpClient 的子类,支持 GZIP 内容。为此,您需要 Apache HttpClient 4.1。

如果您有 Apache HttpClient 4.2,则应该使用

DecompressingHttpClient client = new DecompressingHttpClient();

如果您有 Apache HttpClient 4.3,则应该使用 HttpClientBuilder

关于java - Android/Java 中使用 GZip 编码的 HttpGet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22223396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com