Android volley添加Cookie

來源:互聯網
上載者:User

標籤:android   volley   cookie   

Volley 預設是不支援Cookie的,如何添加Cookie,很是頭疼。

看源碼後發現HttpStack的子類中都有添加Header的代碼。

HurlStack  performRequest方法中

HashMap<String, String> map = new HashMap<String, String>();        map.putAll(request.getHeaders());        map.putAll(additionalHeaders);        if (mUrlRewriter != null) {            String rewritten = mUrlRewriter.rewriteUrl(url);            if (rewritten == null) {                throw new IOException("URL blocked by rewriter: " + url);            }            url = rewritten;        }        URL parsedUrl = new URL(url);        HttpURLConnection connection = openConnection(parsedUrl, request);        for (String headerName : map.keySet()) {            connection.addRequestProperty(headerName, map.get(headerName));        }

HttpClientStack  performRequest方法中

addHeaders(httpRequest, request.getHeaders());

看到什麼端倪了吧,對 request.getHeaders()可以設定Cookie

所以我們只要繼承Request,實現request中的getHeaders()方法就行了。

下面是我繼承JsonObjectRequest實現的方法

import java.util.HashMap;import java.util.Map;import org.json.JSONObject;import com.android.volley.AuthFailureError;import com.android.volley.Response.ErrorListener;import com.android.volley.Response.Listener;import com.android.volley.toolbox.JsonObjectRequest;public class CookieRequest extends JsonObjectRequest {    private Map<String, String> mHeaders=new HashMap<String, String>(1);    public CookieRequest(String url, JSONObject jsonRequest, Listener<JSONObject> listener,                                   ErrorListener errorListener) {        super(url, jsonRequest, listener, errorListener);    }    public CookieRequest(int method, String url, JSONObject jsonRequest, Listener<JSONObject> listener,                                   ErrorListener errorListener) {        super(method, url, jsonRequest, listener, errorListener);    }        public void setCookie(String cookie){        mHeaders.put("Cookie", cookie);    }    @Override    public Map<String, String> getHeaders() throws AuthFailureError {        return mHeaders;    }}

搞定。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.