<span style="font-size:18px;">当前android访问接口传输数据多使用json格式(简单易解析跨平台),为了节省带宽和传输时间服务器往往会在传输前进行gzip压缩,下面是几个需要注意的地方。</span>
1. php 서버의 경우 인터페이스에 접근할 때 헤더에 Accept-Encoding: gzip, deflate 매개변수를 가져와야 합니다. 그렇지 않으면 gzip 압축이 완료된 경우에도 마찬가지입니다. 백그라운드에서는 진정한 압축이 발생하지 않습니다.
2. 서버 gzip이 데이터를 압축하는 경우, AP가 데이터를 얻기 전에 데이터의 압축을 gzip으로 풀어야 합니다.
<span style="font-size:18px;">public String getResponseBodyAsString(HttpResponse response) throws IO<strong>Exception</strong> { GZIPInputStream gzin; if (response.getEntity() != null) { Header header = response.getFirstHeader("Content-Encoding"); if (header != null && header.getValue().toLowerCase().indexOf("gzip") != -1) { gzin = new GZIPInputStream(response.getEntity().getContent()); InputStreamReader isr = new InputStreamReader(gzin, "UTF-8"); BufferedReader br = new BufferedReader(isr); StringBuilder sb = new StringBuilder(); String tmp; while ((tmp = br.readLine()) != null) { sb.append(tmp); sb.append("\r\n"); } br.close(); isr.close(); return sb.toString(); } else { // 否则正常返回 return EntityUtils.toString(response.getEntity(), HTTP.UTF_8); } } else { return null; } }</span>
위 내용은 예외 콘텐츠를 포함하여 Android 인터페이스에서 json 데이터를 전송할 때 gzip 압축을 사용하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.