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源码进行扩展,以实现JSON格式的网络请求(GET和POST)和图片下载功能。同时,它可能还包括了对cookie的支持,这是原生Volley所缺失的。通过这个Demo,...
总结,本篇文章深入探讨了如何使用Volley自定义`GsonRequest`和`MultiPartRequest`来处理JSON数据和文件上传,同时介绍了从图库选择和拍照功能以及图片压缩的相关技术。这些内容对于构建功能丰富的Android应用程序至...
总结来说,Android应用使用Volley框架保持会话主要涉及以下步骤: 1. 重写`parseNetworkResponse`以获取session ID。 2. 创建全局变量存储session ID。 3. 覆盖`getHeaders`以在请求头中添加session ID。 通过这种...
在Android应用开发中,网络请求是必不可少的一部分,用于与服务器进行数据交互,如获取或发送用户数据、更新应用内容等。本篇文章将详细介绍几个常用的Android网络请求框架:OkHttp、Volley、HttpClient以及XUtils。...
使用HttpURLConnection,首先需要建立URL对象,然后打开连接并设置请求方法,最后读取响应。优点是轻量级,但API较为复杂,使用起来不如第三方库方便。 三、Apache HttpClient Apache HttpClient是一个功能强大的...
总结起来,Android获取Web服务器端session并验证登录涉及了服务器会话管理、HTTP请求、JSON解析、数据持久化以及Activity间通信等多个技术点。开发者需要确保在处理这些技术的同时,兼顾用户体验和数据安全性。
对于豆瓣网站,我们需要登录并获取cookie,因为许多数据是基于用户登录状态展示的。这涉及到模拟登录的过程,包括提交用户名、密码,并处理登录后的session或cookie。同时,由于豆瓣可能有反爬虫机制,如限制IP访问...
总结来说,`Android HttpClient Network Lib`是一个关于如何在Android应用中使用HttpClient进行网络通信的知识点,涵盖了HttpClient的基本使用方法、优势,以及如何利用提供的jar包和源码进行开发。虽然HttpClient已...
5. **发送请求并读取响应**:调用connect()方法建立连接,然后通过InputStream读取服务器返回的响应。对于JSON响应,可以使用Gson反序列化。 6. **处理异常**:网络请求可能会出现各种异常,如...
4. 处理响应头:`connection.getHeaderFields()`可获取服务器返回的头信息,如Set-Cookie或Content-Type。 虽然`HttpURLConnection`提供基础的HTTP通信功能,但它并不像OkHttp那样具有缓存、重试策略等高级特性。...
总结,Android登录注册功能的实现涉及到多个层面,包括界面设计、数据验证、网络请求、服务器交互、错误处理、登录状态保持、安全措施及第三方登录集成。开发者需熟练掌握这些技术点,才能为用户提供安全、便捷的...