`

volley 获取cookie总结

 
阅读更多
1.获取服务器返回的cookie值,重写request中的parseNetworkResponse方法就可以了
[java] view plaincopy
StringRequest request= new StringRequest(Method.POST, url, 
             this, this) { 
          
            @Override 
            protected Response<String> parseNetworkResponse( 
                    NetworkResponse response) { 
                // TODO Auto-generated method stub 
                try { 
                      
                    Map<String, String> responseHeaders = response.headers; 
                    String rawCookies = responseHeaders.get("Set-Cookie"); 
                    String dataString = new String(response.data, "UTF-8"); 
                    return Response.success(dataString,HttpHeaderParser.parseCacheHeaders(response)); 
                } catch (UnsupportedEncodingException e) { 
                    return Response.error(new ParseError(e)); 
                }  
            } 
 
        }; 
2.有时服务器会返回多个 Set-Cookie 值,而Volley默认只取第一个,如果有需求,就要自己修改Volley的代码啦,HurlStack(sdk_int>9会走这里)里面的performRequest,默认解析header方式如下,

多个值的话只需要拿到header.getValue().get(1)等等,具体需求可以自行修改。

[java] view plaincopy
Header h = new BasicHeader(header.getKey(), header.getValue().get(0)); 
response.addHeader(h); 

3.给服务器上传Cookie值,如下(因为该类实现了response和error接口,所以参数直接写的this)

[java] view plaincopy
StringRequest request= new StringRequest(Method.POST, url, 
         this, this) { 
        public Map<String, String> getHeaders() throws AuthFailureError { 
            HashMap localHashMap = new HashMap();    
            localHashMap.put("Cookie", "你的cookie值"); 
            return localHashMap; 
        } 
        //设置post参数 
        protected Map<String, String> getParams() { 
            if(params==null){ 
                return new HashMap<String, String>(); 
            } 
                return params; 
        } 
[java] view plaincopy
                      //设置编码格式 
    @Override 
    protected Response<String> parseNetworkResponse( 
            NetworkResponse response) { 
        // TODO Auto-generated method stub 
        try { 
            String dataString = new String(response.data, "UTF-8"); 
            return Response.success(dataString,HttpHeaderParser.parseCacheHeaders(response)); 
        } catch (UnsupportedEncodingException e) { 
            return Response.error(new ParseError(e)); 
        }  
    } 
 
}; 
分享到:
评论

相关推荐

    Volley自定义Demo

    总结一下,这个“Volley自定义Demo”展示了如何基于Volley源码进行扩展,以实现JSON格式的网络请求(GET和POST)和图片下载功能。同时,它可能还包括了对cookie的支持,这是原生Volley所缺失的。通过这个Demo,...

    Volley#Request(GsonRequest,MultiPartRequest)

    总结,本篇文章深入探讨了如何使用Volley自定义`GsonRequest`和`MultiPartRequest`来处理JSON数据和文件上传,同时介绍了从图库选择和拍照功能以及图片压缩的相关技术。这些内容对于构建功能丰富的Android应用程序至...

    Android中Volley框架下保持会话方法

    总结来说,Android应用使用Volley框架保持会话主要涉及以下步骤: 1. 重写`parseNetworkResponse`以获取session ID。 2. 创建全局变量存储session ID。 3. 覆盖`getHeaders`以在请求头中添加session ID。 通过这种...

    Android网络请求框架

    在Android应用开发中,网络请求是必不可少的一部分,用于与服务器进行数据交互,如获取或发送用户数据、更新应用内容等。本篇文章将详细介绍几个常用的Android网络请求框架:OkHttp、Volley、HttpClient以及XUtils。...

    慕课网 Android中的Http通信 笔记及源码

    使用HttpURLConnection,首先需要建立URL对象,然后打开连接并设置请求方法,最后读取响应。优点是轻量级,但API较为复杂,使用起来不如第三方库方便。 三、Apache HttpClient Apache HttpClient是一个功能强大的...

    android获取web服务器端session并验证登陆实用.pdf

    总结起来,Android获取Web服务器端session并验证登录涉及了服务器会话管理、HTTP请求、JSON解析、数据持久化以及Activity间通信等多个技术点。开发者需要确保在处理这些技术的同时,兼顾用户体验和数据安全性。

    豆瓣影视作品网络爬虫.rar

    对于豆瓣网站,我们需要登录并获取cookie,因为许多数据是基于用户登录状态展示的。这涉及到模拟登录的过程,包括提交用户名、密码,并处理登录后的session或cookie。同时,由于豆瓣可能有反爬虫机制,如限制IP访问...

    Android HttpClient Network Lib

    总结来说,`Android HttpClient Network Lib`是一个关于如何在Android应用中使用HttpClient进行网络通信的知识点,涵盖了HttpClient的基本使用方法、优势,以及如何利用提供的jar包和源码进行开发。虽然HttpClient已...

    post方式提交数据

    5. **发送请求并读取响应**:调用connect()方法建立连接,然后通过InputStream读取服务器返回的响应。对于JSON响应,可以使用Gson反序列化。 6. **处理异常**:网络请求可能会出现各种异常,如...

    Http学习之使用HttpURLConnection发送post和get请求 android

    4. 处理响应头:`connection.getHeaderFields()`可获取服务器返回的头信息,如Set-Cookie或Content-Type。 虽然`HttpURLConnection`提供基础的HTTP通信功能,但它并不像OkHttp那样具有缓存、重试策略等高级特性。...

    android登录注册

    总结,Android登录注册功能的实现涉及到多个层面,包括界面设计、数据验证、网络请求、服务器交互、错误处理、登录状态保持、安全措施及第三方登录集成。开发者需熟练掌握这些技术点,才能为用户提供安全、便捷的...

Global site tag (gtag.js) - Google Analytics