Volley框架获取Cookie和带Cookie请求链接
来源:互联网 发布:mac applications 编辑:程序博客网 时间:2024/05/16 19:26
最近我在为自己的网站做app的时候,遇到了一个问题,就是无法记录用户的登录状态。手机的每次普通的请求,服务器都会将其认为新用户请求。这是什么原因呢?其实,就是因为手机的每次请求都没有带上服务器在第一次被请求时返回的Cookie,这样没有Cookie的请求,服务器就会默认为新用户,这就导致无法无法记录登陆状态的问题的出现。
为此,我选择了Volley。
什么是Volley框架呢?它适合进行小数据、多频发的网络操作,以及图片的加载,然而有个缺点:对于大数据量的网络操作,比如说下载文件等,Volley的表现就会非常糟糕。
今天我就给大家带来volley框架获取cookie和带cookie的请求教程。
android端模拟浏览器访问的思路:
1、通过框架获取第一次登陆成功访问返回的Cookie
2、用SharedPreferences保存Cookie
3、每次请求都将保存的Cookie放在请求头部
下面我就为大家献上主要代码:
一、保存Cookie的方法:
private void saveSettingNote(String s,String saveData){//保存设置 SharedPreferences.Editor note = getSharedPreferences(Config.ShareTo,MODE_PRIVATE).edit(); note.putString(s, saveData); note.commit(); }
二、从记录中获取Cookie的方法:
private String getSettingNote(String s){//获取保存设置 SharedPreferences read = getSharedPreferences(Config.ShareTo, MODE_PRIVATE); return read.getString(s, ""); }
三、第一次请求获取Cookie:
RequestQueue mQueue = Volley.newRequestQueue(this); StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.url+"/port/login_port.ashx", new Response.Listener<String>() { @Override public void onResponse(String s) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) {} }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); return map; } @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { try { Map<String, String> responseHeaders = response.headers; String rawCookies = responseHeaders.get("Set-Cookie");saveSettingNote(Config.Cookie,rawCookies);//保存Cookie Log.i("px",rawCookies+"\n"); String dataString = new String(response.data, "UTF-8"); Log.i("px",dataString); return Response.success(dataString, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } } }; mQueue.add(stringRequest);
四、带Cookie的请求
RequestQueue mQueue = Volley.newRequestQueue(this); StringRequest stringRequest = new StringRequest(Request.Method.GET, Config.url+"/port/get_category_port.ashx", new Response.Listener<String>() { @Override public void onResponse(String s) { } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }) { @Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap localHashMap = new HashMap(); localHashMap.put("Cookie", getSettingNote(Config.Cookie));//向请求头部添加Cookie return localHashMap; } }; mQueue.add(stringRequest);
好了,就这些了。希望对你有帮助。有错误的话,麻烦指出来,感激不尽。
5 0
- Volley框架获取Cookie和带Cookie请求链接
- android - Volley框架请求获取Cookie和带Cookie请求链接和带参数Params
- volley框架cookie的获取与设置
- volley框架下发送和读取cookie
- Volley框架下发送和读取Cookie
- volley框架下发送和读取cookie
- volley框架下发送和读取cookie
- 使用Volley请求,获取POST请求cookie值
- volley 获取cookie总结
- volley 获取cookie
- iOS 请求带cookie
- Jmeter带cookie请求
- Http请求带cookie
- okhttp3带cookie请求
- AFnetworking框架存储cookie和使用cookie请求总结
- 带cookie去获取百度云文件下载链接
- Android ImageLoader获取Http请求需带Cookie图片
- Volley 添加Cookie和获取服务器返回的一条或多条Cookie
- 文本错误消息提示
- PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
- Obtaining, Configuring and Building unixODBC
- Lesson 21 DanielMendoza
- ASP.NET MVC5-ModelStateDictionary类ModelState模型验证
- Volley框架获取Cookie和带Cookie请求链接
- SessionFactory启动找不到hbm文件
- 学自慕课网:Spring入门
- App 微信分享
- 通过实现一个TableView来理解iOS UI编程
- 记Struts2到Springmvc迁移-初入IT,思想需要转变
- DevExpress Gridview数据源更新几个简单操作
- Jquery.mask.js源码阅读
- android开发之软键盘控制