Volley 請求/接收內(nèi)容 GZIP壓縮

往后臺傳輸json字符串為例,其他類型同樣做法

自定義Request繼承Volley自帶的StringRequest

GzipRequest.java

public class GzipRequest extends StringRequest {

    private String mData = null;

    public GzipRequest(String url, Response.Listener<String> listener, @Nullable Response.ErrorListener errorListener) {
        super(url, listener, errorListener);
    }

    public GzipRequest(String url,String data, Response.Listener<String> listener, @Nullable Response.ErrorListener errorListener) {
        super(Method.POST,url, listener, errorListener);
        mData = data;
    }

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        Map<String,String> headers = new HashMap<String, String>(); 
        headers.put("Charset", "UTF-8");
        headers.put("Accept-Encoding", "gzip,deflate");//客戶端允許接收GZIP
        headers.put("Content-Encoding", "gzip");//客戶端發(fā)送GZIP內(nèi)容
        headers.put("Content-Type", "application/json");//根據(jù)后臺要求,覺得Content-Type類型
        return headers;
    }

    @Override
    public RetryPolicy getRetryPolicy() {
        return new DefaultRetryPolicy();
        //setRetryPolicy(RetryPolicy policy);可自定義超時時間,重試次數(shù)等參數(shù)
    }

    @Override
    public byte[] getBody() throws AuthFailureError {
        return mData == null ? super.getBody() : compress(mData);
    }

    @Override
    protected Response<String> parseNetworkResponse(NetworkResponse response) {
        String result = uncompress(response.data);
        return Response.success(result, HttpHeaderParser.parseCacheHeaders(response));
        //return super.parseNetworkResponse(response);
    }

    @Override
    protected void deliverResponse(String response) {

    }

    private byte[] compress(String str) {
        try (ByteArrayOutputStream outStream = new ByteArrayOutputStream()) {
            try (GZIPOutputStream gzip = new GZIPOutputStream(outStream)) {
                gzip.write(str.getBytes(StandardCharsets.UTF_8));
            }
            return out.toByteArray();
        }catch (Exception E){
            return new byte[0];
        }
    }

    private String uncompress(byte[] str){
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try (GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(str))) {
            int b;
            while ((b = gis.read()) != -1) {
                baos.write((byte) b);
            }
        }catch (Exception e){
            return "";
        }
        return new String(baos.toByteArray(), StandardCharsets.UTF_8);
    }

}

以上,有幫助到你的話隨手點個贊^^

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澳腹,更是在濱河造成了極大的恐慌,老刑警劉巖杨何,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酱塔,死亡現(xiàn)場離奇詭異,居然都是意外死亡危虱,警方通過查閱死者的電腦和手機羊娃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來埃跷,“玉大人迁沫,你說我怎么就攤上這事“莆茫” “怎么了集畅?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缅糟。 經(jīng)常有香客問我挺智,道長,這世上最難降的妖魔是什么窗宦? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任赦颇,我火速辦了婚禮二鳄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘媒怯。我一直安慰自己订讼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布扇苞。 她就那樣靜靜地躺著欺殿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鳖敷。 梳的紋絲不亂的頭發(fā)上脖苏,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音定踱,去河邊找鬼棍潘。 笑死,一個胖子當(dāng)著我的面吹牛崖媚,可吹牛的內(nèi)容都是我干的亦歉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼畅哑,長吁一口氣:“原來是場噩夢啊……” “哼肴楷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起敢课,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绷杜,沒想到半個月后直秆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡鞭盟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年圾结,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齿诉。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡筝野,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粤剧,到底是詐尸還是另有隱情歇竟,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布抵恋,位于F島的核電站焕议,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏弧关。R本人自食惡果不足惜盅安,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一唤锉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧别瞭,春花似錦窿祥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至籽慢,卻和暖如春浸遗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背箱亿。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工跛锌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人届惋。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓髓帽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脑豹。 傳聞我的和親對象是個殘疾皇子郑藏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容