當前android提供者傳輸資料多使用json格式(簡單易解析跨平台),為了節省頻寬和傳輸時間伺服器往往會在傳輸前進行gzip壓縮,下面是幾個需要注意的地方。
1. 針對php伺服器,在提供者的時候必須在header裡帶上參數Accept-Encoding: gzip, deflate,不然即使後台做了gzip壓縮,也不會進行真正的壓縮。
2.如果服務端對資料進行了gzip壓縮,那麼在ap取得資料前需要對資料先進行gzip解壓即:
public String getResponseBodyAsString(HttpResponse response) throws IOException { 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; } }
以上就介紹了android介面中json資料的傳輸中使用gzip壓縮,包括了Exception方面的內容,希望對PHP教程有興趣的朋友有所協助。