使用Volley库StringRequest发起GET请求出现com.android.volley.AuthFailureError
Volley GET请求本地PHP接口报AuthFailureError 解决方法
你已完成基础环境排查(网络权限配置、明文流量允许、防火墙关闭、公网地址可正常访问),该错误多为Volley默认请求头与本地PHP服务端的校验规则不匹配导致,可按以下步骤修复:
方案1:重写请求的
getHeaders方法,自定义请求头适配服务端要求
可在原有StringRequest基础上扩展重写头信息配置,示例代码如下:val stringRequest = object : StringRequest(Request.Method.GET, url, { response -> Log.d("tag", "SI") }, { error -> Log.d("tag", error.toString()) }) { override fun getHeaders(): MutableMap<String, String> { val headers = HashMap<String, String>() // 按需添加服务端兼容的请求头,示例配置浏览器UA、数据格式声明 headers["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" headers["Content-Type"] = "application/json; charset=utf-8" return headers } // 统一参数编码,避免编码不匹配问题 override fun getParamsEncoding(): String { return "UTF-8" } }方案2:确认设备网络网段一致性
检查运行PHP服务的电脑和安卓测试设备是否处于同一192.168.100.x局域网网段,若安卓设备连接了跨网段WiFi或蜂窝移动网络,会无法访问内网IP的服务。方案3:排查服务端访问控制配置
查看本地运行的Apache/Nginx服务配置,确认是否设置了IP访问限制、请求头拦截规则,部分集成环境默认会拦截局域网内其他设备的访问请求。
内容的提问来源于stack exchange,提问作者Juan Manuel
相关产品推荐
相关产品推荐

