0

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

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

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

EDIT2:根据jJ的回答我试过这个代码:

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 );
}

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

4

1 回答 1

0

在 android 上,您应该使用HttpURLConnection为您处理来自 GingerBread 的解压缩(和 http 编码标头),或者使用具有 getUngzippedContent 和 modifyRequestToAcceptGzipResponse 等辅助方法的AndroidHttpClient(对于较旧的 android 版本)。

这是一个很好的总结Android HTTP 客户端

于 2012-05-17T09:58:51.143 回答