采用gzip传输时volley的使用

采用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);即可

 

 


 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值