获取用户列表时遇com.android.volley.AuthFailureError(401错误)求助
解决Volley请求401未授权(AuthFailureError)问题
看来你在通过Volley做Basic认证请求用户列表时踩坑了——401错误和AuthFailureError本质都是认证信息无效或格式不对,我帮你捋捋常见问题和修复方案:
核心问题分析
401状态码明确表示服务器拒绝你的请求,因为认证凭证不被认可;而AuthFailureError是Volley抛出的,说明你的getHeaders()方法里的认证头可能存在格式错误。
修复步骤
1. 修正Base64编码的Flag
Android自带的Base64类默认编码会添加换行符,这会破坏Basic认证的格式,必须使用Base64.NO_WRAP flag来避免换行:
@Override public Map<String, String> getHeaders() throws AuthFailureError { HashMap<String, String> headers = new HashMap<>(); String creds = String.format("%s:%s", "你的邮箱", "你的密码"); // 关键:添加NO_WRAP flag,避免编码后出现换行 String auth = "Basic " + Base64.encodeToString(creds.getBytes(), Base64.NO_WRAP); headers.put("Authorization", auth); // 注意Key是Authorization,拼写别错! return headers; }
2. 排查常见低级错误
- 确认邮箱和密码没有拼写错误,包括大小写、特殊字符(比如@符号)
- 检查服务器是否确实支持Basic认证,有些服务可能要求Bearer Token或其他认证方式
- 确保没有其他Volley拦截器(比如自定义的
RequestInterceptor)修改或覆盖了你的Authorization头
3. 测试认证字符串是否有效
你可以手动把creds字符串用Base64编码(别用真实密码在在线工具测试!),然后构造Basic [编码后字符串],用Postman直接请求接口,看是否能成功。如果Postman能成功,那问题肯定在你的代码实现上。
额外建议
如果是生产环境,别硬编码邮箱密码!可以把凭证存在安全存储里(比如Android Keystore),避免代码泄露风险。
内容的提问来源于stack exchange,提问作者ngx311
相关产品推荐
相关产品推荐

