后端把授权信息放到header里面了,使用xutils3的我怎么拿到呢
1新建GetHeaderRespond
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() {
}
});