作者Geniusking (真理斯金)
看板java
标题[问题] Java程式如何解压缩WebServer传来的gzip网页内容?
时间Mon Apr 26 00:00:01 2010
其实这是Android内的程式,不过应该差不多
我是用apache的HttpClient做连线
WebServer有支援Gzip压缩,所以我用
httpRequest.addHeader("Accept-Encoding", "deflate,gzip");
在Request时请求一个经Gzip压缩後的结果
但因为我的APP不是Browser所以没办法把回传的结果解压缩
有查了一下GZIPInputStream的用法,但找不到直接把回传结果解压缩印出来的方法
感觉先把结果存成档案再解压缩似乎可以?
请问大家如果是你们会怎麽做?谢谢!
以下是部分Code
mButton2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
/* 宣告网址字串 */
String uriAPI = "
http://mpc06.cs.nctu.edu.tw/lifestyleAPI/test2.php";
/* 建立HTTP Get连线 */
HttpGet httpRequest = new HttpGet(uriAPI);
httpRequest.addHeader("Accept-Encoding", "deflate,gzip");
try
{
/* 发出HTTP request */
HttpResponse httpResponse = new DefaultHttpClient()
.execute(httpRequest);
/* 若状态码为200 ok */
if (httpResponse.getStatusLine().getStatusCode() == 200)
{
/* 取出回应字串 */
String strResult = EntityUtils.toString(httpResponse.getEntity(),
HTTP.UTF_8);
/* 这边的strResult是被Gzip压缩过的乱码字串 */
/* 删除多余字元 */
strResult = eregi_replace("(\r\n|\r|\n|\n\r)", "", strResult);
mTextView1.setText(strResult);
} else
{
mTextView1.setText("Error Response: "
+ httpResponse.getStatusLine().toString());
}
} catch (ClientProtocolException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
} catch (IOException e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
} catch (Exception e)
{
mTextView1.setText(e.getMessage().toString());
e.printStackTrace();
}
}
});
--
☆
╭──╮╭──╮┌╭─╮ ○ ┌┐┌┐╭──╮┌┐┌┐ ○ ┌╭─╮╭──┐
│╭─┘│╭╮││╭╮│ ┌┐ │││││╭─╯│╰╭╯ ┌┐ │╭╮││╭╮│
│┌┐││┌─╯││││ ││ │╰┘│╰─╮╮│╭╮╮ ││ ││││╰─┐│
╰──╯╰──╯└┘└┘ └┘ ╰─└┘╰──╯└┘└┘ └┘ └┘└┘╰──╯
http://www.wretch.cc/blog/Geniusking ☆
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.198.25