編輯:關於Android編程
Volley 默認是不支持Cookie的,如何添加Cookie,很是頭疼。
看源碼後發現HttpStack的子類中都有添加Header的代碼。
HurlStack performRequest方法中
HashMapmap = new HashMap (); 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 MapmHeaders=new HashMap (1); public CookieRequest(String url, JSONObject jsonRequest, Listener listener, ErrorListener errorListener) { super(url, jsonRequest, listener, errorListener); } public CookieRequest(int method, String url, JSONObject jsonRequest, Listener listener, ErrorListener errorListener) { super(method, url, jsonRequest, listener, errorListener); } public void setCookie(String cookie){ mHeaders.put("Cookie", cookie); } @Override public Map getHeaders() throws AuthFailureError { return mHeaders; } }
在項目開發中,帶刪除按鈕輸入框也是人們常常用到的,該文章便介紹一下如何創建一個帶刪除輸入框。其中,需要解決的問題如下:a)創建自定義editText類b)在自定義edit
首先上效果圖,實現如下效果: @Override protected void onCreate(Bundle savedInstanceState) {
新的Java8 API中提供了不少新的特性,其中就有Lambda表達式。而本文我們將主要介紹一下在Android開發過程中如何使用Lambda表達式,這裡主要是為我們後續
昨天有人問我Android怎麼連接mysql數據庫,和對數據庫的操作呀,我想把,給他說說json通信,可是他並不知道怎麼弄,哎算了吧,直接叫他用ksoap吧,給他說了大半