获取响应的header信息(xutils3)

112 阅读1分钟

后端把授权信息放到header里面了,使用xutils3的我怎么拿到呢
在这里插入图片描述
1新建GetHeaderRespond,在afterRequest回调里拿到

package com.ruhai.yibei.header;

import android.util.Log;

import com.alibaba.fastjson.JSON;
import com.ruhai.yibei.Constant;
import com.ruhai.yibei.bean.LoginBean;

import org.xutils.http.app.ResponseParser;
import org.xutils.http.request.UriRequest;

import java.lang.reflect.Type;

public class GetHeaderRespond implements ResponseParser<String> {


    @Override
    public Object parse(Type resultType, Class<?> resultClass, String result) throws Throwable {
        return JSON.parseObject(result, resultClass);
    }

    @Override
    public void beforeRequest(UriRequest request) throws Throwable {
    }

    @Override
    public void afterRequest(UriRequest request) throws Throwable {
        String authorization = request.getResponseHeader("Authorization");
        Constant.authorization = authorization;
    }
}

2 bean里面使用注解@HttpResponse(parser = GetHeaderRespond.class)对返回的header进行关联

package com.ruhai.yibei.bean;

import com.ruhai.yibei.header.GetHeaderRespond;

import org.xutils.http.annotation.HttpResponse;

@HttpResponse(parser = GetHeaderRespond.class)
public class LoginBean {
    private String msg;
    private String code;
    private DataDTO data;

    @Override
    public String toString() {
        return "LoginBean{" +
                "msg='" + msg + '\'' +
                ", code='" + code + '\'' +
                ", data=" + data +
                '}';
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public DataDTO getData() {
        return data;
    }

    public void setData(DataDTO data) {
        this.data = data;
    }

    public static class DataDTO {
        private int id;
        private int state;
        private String createTime;
        private String createBy;
        private String updateTime;
        private String updateBy;
        private Object remark;
        private String nickName;
        private String email;
        private String phone;
        private Object address;
        private Object avatar;

        @Override
        public String toString() {
            return "DataDTO{" +
                    "id=" + id +
                    ", state=" + state +
                    ", createTime='" + createTime + '\'' +
                    ", createBy='" + createBy + '\'' +
                    ", updateTime='" + updateTime + '\'' +
                    ", updateBy='" + updateBy + '\'' +
                    ", remark=" + remark +
                    ", nickName='" + nickName + '\'' +
                    ", email='" + email + '\'' +
                    ", phone='" + phone + '\'' +
                    ", address=" + address +
                    ", avatar=" + avatar +
                    '}';
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public int getState() {
            return state;
        }

        public void setState(int state) {
            this.state = state;
        }

        public String getCreateTime() {
            return createTime;
        }

        public void setCreateTime(String createTime) {
            this.createTime = createTime;
        }

        public String getCreateBy() {
            return createBy;
        }

        public void setCreateBy(String createBy) {
            this.createBy = createBy;
        }

        public String getUpdateTime() {
            return updateTime;
        }

        public void setUpdateTime(String updateTime) {
            this.updateTime = updateTime;
        }

        public String getUpdateBy() {
            return updateBy;
        }

        public void setUpdateBy(String updateBy) {
            this.updateBy = updateBy;
        }

        public Object getRemark() {
            return remark;
        }

        public void setRemark(Object remark) {
            this.remark = remark;
        }

        public String getNickName() {
            return nickName;
        }

        public void setNickName(String nickName) {
            this.nickName = nickName;
        }

        public String getEmail() {
            return email;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public String getPhone() {
            return phone;
        }

        public void setPhone(String phone) {
            this.phone = phone;
        }

        public Object getAddress() {
            return address;
        }

        public void setAddress(Object address) {
            this.address = address;
        }

        public Object getAvatar() {
            return avatar;
        }

        public void setAvatar(Object avatar) {
            this.avatar = avatar;
        }
    }
}

3 使用

RequestParams params = new RequestParams(Constant.login);
                params.addBodyParameter("appId", 8);
                params.addBodyParameter("username", edtPhoneNum.getText().toString().trim());
                params.addBodyParameter("password", edtPw.getText().toString().trim());
                params.setAsJsonContent(true);

                x.http().post(params, new Callback.CommonCallback<LoginBean>() {
                    @Override
                    public void onSuccess(LoginBean loginBean) {
//                        new GetHeaderRespond();
                        Log.e("wy", "result: " + loginBean.toString());
//                        LoginBean loginBean = JSON.parseObject(result.toString(), LoginBean.class);

                        if (loginBean.getCode().equals("00000000")) {
                            Constant.nickName = loginBean.getData().getNickName();
                            Constant.email = loginBean.getData().getEmail();
                            Constant.phone = loginBean.getData().getPhone();
                            startActivity(new Intent(LoginActivity.this, MainActivity.class));
                        } else {
                            Toast.makeText(x.app(), loginBean.getMsg(), Toast.LENGTH_LONG).show();
                        }

                    }

                    @Override
                    public void onError(Throwable ex, boolean isOnCallback) {
                        Log.e("wy", "result: " + ex.getMessage());
                    }

                    @Override
                    public void onCancelled(CancelledException cex) {
                        Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show();
                    }

                    @Override
                    public void onFinished() {

                    }
                });