Android使用Volley保持与服务器的会话
16lz
2021-01-23
package cn.usmaker.hm.pai.velloy;import com.android.volley.AuthFailureError;import com.android.volley.NetworkResponse;import com.android.volley.ParseError;import com.android.volley.Request;import com.android.volley.Response;import com.android.volley.toolbox.HttpHeaderParser;import org.json.JSONException;import org.json.JSONObject;import java.io.UnsupportedEncodingException;import java.util.HashMap;import java.util.Map;/** * Created by chenzhenyang on 2015/6/21. */public class NormalPostRequest extends Request<JSONObject> { private Map mMap; private Map mHeaders = new HashMap(1); public static String sessionID = null; private Response.Listener mListener; public NormalPostRequest(String url, Response.Listener listener, Response.ErrorListener errorListener, Map map) { super(Request.Method.POST, url, errorListener); mListener = listener; mMap = map; } //mMap是已经按照前面的方式,设置了参数的实例 @Override protected Map getParams() throws AuthFailureError { return mMap; } //此处因为response返回值需要json数据,和JsonObjectRequest类一样即可 @Override protected Response parseNetworkResponse(NetworkResponse response) { try { Map headers = response.headers; String cookie = headers.get("Set-Cookie"); if (cookie != null) { sessionID = cookie.substring(0, cookie.indexOf(";"));// 获取sessionID } String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(new JSONObject(jsonString), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JSONException je) { return Response.error(new ParseError(je)); } } @Override protected void deliverResponse(JSONObject response) { mListener.onResponse(response); } @Override public Map getHeaders() throws AuthFailureError { if (sessionID != null) { mHeaders.put("Cookie", sessionID); } return mHeaders; } /** * 清除Session,退出时调用 */ public static void clearSession() { sessionID = null; }}
更多相关文章
- Android软键盘用法实例
- Android对话框实例-注册对话框
- Android 全屏显示实例
- android之Fragment静态实现实例
- android用户界面详尽教程实例
- [置顶] 我的Android进阶之旅------>Android Widget 桌面数字时钟
- Android中判断网络是否连接实例详解
- Android 实现扫雷小游戏实例代码
- Android——ViewGroup的一个用法实例