修复401报错

This commit is contained in:
fengjignqi
2026-06-22 14:40:54 +08:00
parent bc3091ac02
commit 5842837a9e
7 changed files with 114 additions and 17 deletions

View File

@@ -194,6 +194,7 @@ public abstract class BaseActivity<T extends ViewBinding, P extends IPresenter>
if (message.msg.equals(EventMessage.USER_LOGIN_LOST)) {
Log.d("DINGDING","Activity接收一次");
Log.d("DINGDING", "触发堆栈:", new Throwable("401触发堆栈追踪"));
Log.d("DINGDING", "当前Activity状态: isFinishing=" + isFinishing() + ", isDestroyed=" + isDestroyed());
// 检查Activity状态如果正在销毁则不处理

View File

@@ -92,16 +92,22 @@ public class MineFragment extends BaseFragment<MineFragmentBinding, MinePresente
goTo(mContext, LoginActivity.class, null);
return;
}
new XPopup.Builder(mContext).asBottomList("头像", new String[]{"上传头像", "查看大图"}, new OnSelectListener() {
new XPopup.Builder(mContext).asBottomList(
getString(R.string.avatar),
new String[]{
getString(R.string.upload_avatar),
getString(R.string.view_full_image)}, new OnSelectListener() {
@Override
public void onSelect(int position, String text) {
switch (position) {
case 0:
String readPermission = Manifest.permission.READ_EXTERNAL_STORAGE;
if (!hasRecordPermission(readPermission)) {
// 没有权限只在ACTION_DOWN时去申请
getPermissionRequst(readPermission, "相机、文件访问权限申请",
"星语明灯需要您的授权,获取文件访问权限来修改头像", REQUEST_CODE_100);
// 没有权限只在ACTION_DOWN时去申请+
getPermissionRequst(readPermission,
getString(R.string.request_camera_storage_permission),
getString(R.string.avatar_permission_tips),
REQUEST_CODE_100);
return;
} else {
imagePicker(1, REQUEST_CODE_100, MineFragment.this);

View File

@@ -90,7 +90,11 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
case R.id.img_avatar:
case R.id.img_camera:
new XPopup.Builder(mContext).asBottomList("选择头像", new String[]{"上传头像", "查看大图"}, new OnSelectListener() {
new XPopup.Builder(mContext).asBottomList(
getString(R.string.avatar),
new String[]{
getString(R.string.upload_avatar),
getString(R.string.view_full_image)}, new OnSelectListener() {
@Override
public void onSelect(int position, String text) {
switch (position) {
@@ -98,8 +102,10 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
String readPermission = Manifest.permission.READ_EXTERNAL_STORAGE;
if (!hasRecordPermission(readPermission)) {
// 没有权限只在ACTION_DOWN时去申请
getPermissionRequst(readPermission,"相册权限申请",
"智能浇水需要您的授权,获取相册修改头像",REQUEST_EVENT_CODE_10001);
getPermissionRequst(readPermission,
getString(R.string.request_camera_storage_permission),
getString(R.string.avatar_permission_tips),
REQUEST_EVENT_CODE_10001);
return;
}else{
imagePicker(1,PICK_IMAGE_REQUEST_100);
@@ -115,12 +121,13 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
break;
case R.id.rl_nickname:
showEditDialog("修改昵称",
"请输入昵称",
showEditDialog(
getString(R.string.edit_nickname),
getString(R.string.input_nickname),
mUserBean.getUser().getNickName(),
true,
"取消",
"确定",
getString(R.string.cancel_text),
getString(R.string.confirm_text),
INPUT_TYPE_NORMAL,
new OnDialogClick() {
@Override
@@ -202,26 +209,26 @@ public class MineInfomationActivity extends BaseActivity<MineInformationLayoutBi
String fileName = file.getName();
if (fileSizeInMB > 5) {
hideDialogLoading();
ToastUtil.showShort(mContext, "文件大小超出5M");
ToastUtil.showShort(mContext, getString(R.string.file_size_exceeds_5m));
return;
}
if (!fileName.toLowerCase().endsWith(".png") &&
!fileName.toLowerCase().endsWith(".jpg") &&
!fileName.toLowerCase().endsWith(".jpeg")) {
ToastUtil.showShort(mContext, "文件格式不正确");
ToastUtil.showShort(mContext, getString(R.string.invalid_file_format));
hideDialogLoading();
return;
}
hideDialogLoading();
ToastUtil.showShort(mContext,"头像修改成功");
ToastUtil.showShort(mContext,getString(R.string.avatar_update_success));
Glide.with(mContext)
.load(file)
.error(mContext.getDrawable(R.mipmap.icon_mine_user_head_defaul))
.into(viewBinding.imgAvatar);
} else {
ToastUtil.showShort(mContext, "文件不存在");
ToastUtil.showShort(mContext, getString(R.string.file_not_exist));
}
}
}

View File

@@ -107,8 +107,11 @@ public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding
case R.id.tv_log_out:
showDialogtext(mContext.getResources().getDrawable(R.mipmap.img_location), false, false,true,
"提示", "确定要退出当前账号?",
"取消", "确定", new BaseFragment.OnDialogClick() {
getString(R.string.tip_text),
getString(R.string.logout_dialog_tips),
getString(R.string.cancel_text),
getString(R.string.confirm_text),
new BaseFragment.OnDialogClick() {
@Override
public void onCancelClick() {
}

View File

@@ -83,6 +83,30 @@ public class NetWorkManager {
}
}
/**
* 响应拦截器:在 OkHttp 响应阶段直接捕获 HTTP 401/406/499 状态码,
* 同时打印请求 URL方便定位触发登录过期弹窗的具体接口。
*/
class ResponseInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
okhttp3.Request request = chain.request();
String requestUrl = request.url().toString();
String requestMethod = request.method();
okhttp3.Response response = chain.proceed(request);
int httpCode = response.code();
if (httpCode == 401 || httpCode == 406 || httpCode == 499) {
Log.e("TEST", "触发401拦截 → HTTP状态码=" + httpCode
+ " | 请求方法=" + requestMethod
+ " | 请求URL=" + requestUrl);
}
return response;
}
}
/**
* 初始化必要对象和参数
*/
@@ -101,10 +125,14 @@ public class NetWorkManager {
Log.e("RetrofitLog", "retrofitBack=" + new Gson().toJson(jsonObject));
String s = jsonObject.getString("code");
if (s.equals("401")) {
Log.e("TEST", "触发401弹窗 → 业务code=401响应体=" + jsonObject.toString());
Log.e("TEST", "401发送堆栈:", new Throwable("NetWorkManager发送401堆栈"));
EventBus.getDefault().post(new EventMessage(EventMessage.USER_LOGIN_LOST));
} else if (s.equals("406")) {
}else if(s.equals("499")){
Log.e("TEST", "触发499弹窗 → 业务code=499响应体=" + jsonObject.toString());
Log.e("TEST", "499发送堆栈:", new Throwable("NetWorkManager发送499堆栈"));
EventBus.getDefault().post(new EventMessage(EventMessage.CODE_LOGIN_LOST));
// Activity activity = MyApplication.getCurrentActivity();
@@ -131,6 +159,7 @@ public class NetWorkManager {
// 初始化OkHttp
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor) //添加网络拦截器
.addInterceptor(new ResponseInterceptor()) // HTTP状态码401/406/499拦截
.addInterceptor(new HeaderInterceptor()) //添加网络拦截器
.connectTimeout(120, TimeUnit.SECONDS)// 连接超时时间
.readTimeout(120, TimeUnit.SECONDS) //读取超时

View File

@@ -177,6 +177,7 @@
<string name="mine_psd_reset">Change Password</string>
<string name="mine_find_psd">Forgot Password</string>
<string name="logout_tips">Sign out of your account</string>
<string name="logout_dialog_tips">Are you sure you want to log out?</string>
<string name="agree_user_policy">
@@ -219,6 +220,29 @@
<string name="theme_dark">Dark</string>
<string name="press_again_to_exit">Press again to exit</string>
<!-- 头像 -->
<string name="avatar">Avatar</string>
<!-- 上传头像 -->
<string name="upload_avatar">Upload Avatar</string>
<!-- 查看大图 -->
<string name="view_full_image">View Full Image</string>
<!-- 相机、文件访问权限申请 -->
<string name="request_camera_storage_permission">Camera File Access Permission</string>
<!-- 需要您的授权,获取文件访问权限来修改头像 -->
<string name="avatar_permission_tips">We need your permission to access files so you can change your avatar.</string>
<string name="edit_nickname">Edit Nickname</string>
<string name="input_nickname">Please enter a nickname</string>
<string name="file_size_exceeds_5m">File size exceeds 5 MB</string>
<string name="invalid_file_format">Invalid file format</string>
<string name="avatar_update_success">Avatar updated successfully</string>
<string name="file_not_exist">File does not exist</string>
<!-- End -->

View File

@@ -166,6 +166,11 @@
<string name="mine_psd_reset">重置密码</string>
<string name="mine_find_psd">找回密码</string>
<string name="logout_tips">退出当前账号</string>
<string name="logout_dialog_tips">确定退出当前账号</string>
<string name="edit_nickname">修改昵称</string>
<string name="input_nickname">请输入昵称</string>
<string name="agree_user_policy">
@@ -203,6 +208,28 @@
<string name="press_again_to_exit">再按一次退出</string>
<!-- 头像 -->
<string name="avatar">头像</string>
<!-- 上传头像 -->
<string name="upload_avatar">上传头像</string>
<!-- 查看大图 -->
<string name="view_full_image">查看大图</string>
<!-- 相机、文件访问权限申请 -->
<string name="request_camera_storage_permission">文件访问权限申请</string>
<!-- 需要您的授权,获取文件访问权限来修改头像 -->
<string name="avatar_permission_tips">需要您的授权,获取文件访问权限来修改头像</string>
<string name="file_size_exceeds_5m">文件大小超出5M</string>
<string name="invalid_file_format">文件格式不正确</string>
<string name="avatar_update_success">头像修改成功</string>
<string name="file_not_exist">文件不存在</string>
<!--结束-->