Android开发经验谈Android知识

volley封装header头信息,利用头信息区分和校验用户权限

2015-12-26  本文已影响2557人  小追兵

小追兵专栏

在app后台设计之初,为了数据的安全,会设计一套检验系统。
只有通过这个校验的请求才被认为是自己app的合法访问。

怎样确保每次的数据请求都是合法的呢?
我们在数据访问的时候增加数据请求头。也就是网络访问的header。

先看下面代码,我们可以通过继承复写volley的JsonObjectRequest类,来看看我们的实现类SignJsonRequest的具体做法:

header代码封装 :

package com.xxxx.xxxx.xxx;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONObject;

import biz.lemeng.zhimianbao.Config;
import biz.lemeng.zhimianbao.app.MyApplication;
import biz.lemeng.zhimianbao.model.LoginHelper;
import biz.lemeng.zhimianbao.utils.StringUtils;

import com.android.volley.AuthFailureError;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.JsonObjectRequest;

public class SignJsonRequest extends JsonObjectRequest {

    public SignJsonRequest(String url, JSONObject jsonRequest,
            Listener<JSONObject> listener, ErrorListener errorListener) {
        super(url, jsonRequest, listener, errorListener);
    }

    public SignJsonRequest(int method, String url, JSONObject jsonRequest,
            Listener<JSONObject> listener, ErrorListener errorListener) {
        super(method, url, jsonRequest, listener, errorListener);
    }

    // 重写头信息,为了服务器授权
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {

        HashMap<String, String> headers = new HashMap<String, String>();
        headers.put(Config.HEADER_KEY, StringUtils.getSign());
        
        //如果已经登录,追加头信息
        if(LoginHelper.isLogin())
        {
            headers.put(Config.HEADER_LOGIN_KEY, MyApplication.gUserID+","+MyApplication.gUserToken);
        }
        
        return headers;
    }
}

可以看出我们实现了两个构造函数,还有复写了getHeaders()这个方法。

header的作用:安全校验,权限校验

最后:有需要Shadowsock翻墙账号可以私聊。

上一篇 下一篇

猜你喜欢

热点阅读