Android Volley 的post请求自定义 和 volley 的cookies 使用

栏目: Android · 发布时间: 6年前

内容简介:android的网络请求有很多第三方框架,其中volley由于其高的定制性、稳定性以及速度快得到了大家广泛的使用以及研究,这里我只是说一下我对这个框架下post请求使用的心得体会。 一.cookies的使用 cookies,token,seesion这些都可以理解为我们请求登陆接口后,后台根据用户信息生成一串字符串,然后每次请求接口后会读取这串字符串,就可以识别为那个用户,并且根据用户信息做接下来的逻辑判断。 首先自定义一个MyPostRequest 继承 Request 然后重写getHeaders()方

android的网络请求有很多第三方框架,其中volley由于其高的定制性、稳定性以及速度快得到了大家广泛的使用以及研究,这里我只是说一下我对这个框架下post请求使用的心得体会。 一.cookies的使用 cookies,token,seesion这些都可以理解为我们请求登陆接口后,后台根据用户信息生成一串字符串,然后每次请求接口后会读取这串字符串,就可以识别为那个用户,并且根据用户信息做接下来的逻辑判断。 首先自定义一个MyPostRequest 继承 Request 然后重写getHeaders()方法

/**
	 * 在heard里面加入cookies
	 * */
	@Override
	public Map<String, String> getHeaders() throws AuthFailureError {
		if (cookies!=null && cookies.length()>1) {
			HashMap<String, String> headers = new HashMap<String, String>();
			headers.put("cookie",cookies);
			Log.d("Volley", "headers----------------" + headers);
			return headers;
		}else {
			return super.getHeaders();
		}
	}
复制代码

cookie为取到的cookie值缓存起来

获取cookie

/**
	 * 对请求的结果进行处理
	 * */
	@Override
	protected Response<RequestCall> parseNetworkResponse(
			NetworkResponse response) {
			if (cookies==null || DtdApplication.cookies.length()<1) {
				Map<String, String> responseHeaders = response.headers;
				String rawCookies = responseHeaders.get("Set-Cookie");
				if (rawCookies!=null) {
	cookies=rawCookies.substring(0,rawCookies.indexOf(";"));
					
				}
			}
			}
复制代码

这个方法里去cookie值 二、BodyContentType

@Override
	public String getBodyContentType() {
		return "application/json; charset=" + getParamsEncoding();
	}

复制代码

这个方法可以设置contenttype,contenttype为请求heard里面的头部分,用来识别数据的格式

三。定义参数为object类型

@Override
	public byte[] getBody() throws AuthFailureError {
		Map<String, Object> params = parms;
        if (params != null && params.size() > 0) {
            try {
				return JsonUtils.toJson(params).getBytes(getParamsEncoding());
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
        }
        return null;
	}
复制代码

从手机端到服务器传递的之最后都会转化成byte[],所以我们之object转成byte数组,然后后台可以识别就可以自,治理我转化成json。

四、设置时间间隔和重复请求

/**
	 * 重复请求次数时间设置
	 * */
	@Override
	public RetryPolicy getRetryPolicy() {
		RetryPolicy retryPolicy = new DefaultRetryPolicy(1000*3, 0, 1.0f);  
		return retryPolicy; 
	}
复制代码

这个方法用来设置请求过期时间,第一个参数为时间,第二个为重复请求次数

五、最后在说下Response parseNetworkResponse方法 这个方法为请求返回后的方法 其中response里面放的是请求返回的数据 response.data放的是请求返回的体,是body,为byte数组 response.headers 为请求头,存放contenttype、cookies等一些heard信息


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

如何把事情做到最好

如何把事情做到最好

乔治·伦纳德 / 张乐 / 中国青年出版社 / 2014-2 / 29.90元

•改变全球9800万人的人生指导书 •全美第一本系统阐述学习与成功之道的经典著作 •长期盘踞全美畅销书榜单 •21年后,这本传奇之书终于在中国震撼上市 •把事情做到最好,第一不强求天赋,第二不介意起步的早晚,你要做的就是“起步走”并“不停地走” 《如何把事情做到最好》出 版于1992年,经久不衰,经过一代又一代的读者口碑相传后,畅销至今。作者以其独特的视角告诉人们,如......一起来看看 《如何把事情做到最好》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具