Android - 从http下载压缩的答案

时间:2012-05-17 09:11:26

标签: android compression gzip

我正在尝试从服务器获取压缩数据。编程服务器的人告诉我,他在他的iPhone上使用ZLIB库,在服务器上使用gzcompress。我试图找到任何合适的方法来获取该数据,但在创建GZIPInputStream对象时,它最终会出现信息“java.io.IOException:unknown format(magic number 9c78)”。最后我达到了一点,我将数据作为字符串。它被压缩了,所以我用这个答案解压缩:https://stackoverflow.com/a/6963668/419308。但该代码不起作用。 “in.read()”在开头返回-1。

任何人都知道为什么有-1?或者可能是获取压缩数据的更好方法?

编辑: 我尝试将文件添加到项目并从该文件中读取。 in.read()没有返回-1

EDIT2:根据jJ's answer我试过这段代码:

HttpGet request = new HttpGet( urlTeam );
HttpResponse response = new DefaultHttpClient().execute( request );
HttpEntity entity = response.getEntity();

InputStream stream = AndroidHttpClient.getUngzippedContent( entity );

InputStreamReader reader = new InputStreamReader( stream );
BufferedReader buffer = new BufferedReader( reader );

StringBuilder sb = new StringBuilder();
sb.delete( 0, sb.length() );
String input;
while ( ( input = buffer.readLine() ) != null )
{
     sb.append( input );
}

但答案仍然是压缩的(或不可读的)

1 个答案:

答案 0 :(得分:0)

在Android上你应该使用HttpURLConnection处理解压缩(和http编码头)来自GingerBread on或AndroidHttpClient(对于较旧的android版本),它有辅助方法,如getUngzippedContent和modifyRequestToAcceptGzipResponse。 / p>

这是一个很好的总结Android HTTP clients