现在的位置: 首页 > 综合 > 正文

采用gzip传输时volley的使用

2013年05月07日 ⁄ 综合 ⁄ 共 843字 ⁄ 字号 评论关闭

采用gzip传输好处不言而喻。通过volley得到响应字节流后判断是否经过gzip压缩并进行相应处理。

一般常用自定义request用法:

在parseNetworkResponse一般这样获取响应字符串:

String json = new String(
                    response.data, HttpHeaderParser.parseCharset(response.headers));

进行gzip压缩后,需这样处理:

 private int getShort(byte[] data)
    {
	return (int) ((data[0] << 8) | data[1] & 0xFF);
    }

    private String getRealString(byte[] data)
    {
	byte[] h = new byte[2];
	h[0] = (data)[0];
	h[1] = (data)[1];
	int head = getShort(h);
	boolean t = head == 0x1f8b;
	InputStream in;
	StringBuilder sb = new StringBuilder();
	try
	{
	    ByteArrayInputStream bis = new ByteArrayInputStream(data);
	    if (t)
	    {
		in = new GZIPInputStream(bis);
	    }
	    else
	    {
		in = bis;
	    }
	    BufferedReader r = new BufferedReader(new InputStreamReader(in), 1000);
	    for (String line = r.readLine(); line != null; line = r.readLine())
	    {
		sb.append(line);
	    }
	    in.close();
	}
	catch (Exception e)
	{
	    e.printStackTrace();
	}
	return sb.toString();
    }

在parseNetworkResponse中String jsonString = getRealString(response.data);即可

 

 

 

 

 

抱歉!评论已关闭.