安卓集成Volley1.1.1点击注册触发com.android.volley.clientError错误求助
错误原因
- 传参方法拼写错误:你代码中重写的参数传递方法名为
getParms(),而Volley要求的正确方法名是getParams(),拼写错误导致方法未被系统调用,POST请求没有携带email和password参数,后端收不到必填参数返回400类客户端错误,这是最核心的错误原因。
- 传参方法拼写错误:你代码中重写的参数传递方法名为
- 明文请求限制:Android 9及以上系统默认禁止HTTP明文请求,你使用的
http://10.0.2.2属于明文请求地址,未配置对应权限的话也会触发请求异常。
- 明文请求限制:Android 9及以上系统默认禁止HTTP明文请求,你使用的
- 后端适配问题:可能存在后端服务未启动、接口不支持POST请求、接口接收参数名和你传递的不匹配等问题。
解决方案
- 修正传参方法拼写
将你代码中匿名类内部的传参方法修改为正确写法,添加@Override注解避免后续拼写错误:
- 修正传参方法拼写
@Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> params = new HashMap<>(); params.put("email", email); params.put("password", password); return params; }
- 配置HTTP明文访问权限
在res/xml目录下新建network_security_config.xml文件,填入以下内容:
- 配置HTTP明文访问权限
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">10.0.2.2</domain> </domain-config> </network-security-config>
之后在AndroidManifest.xml的<application>标签中添加配置,引用上述网络安全规则:
<application ... android:networkSecurityConfig="@xml/network_security_config" ...>
- 验证后端接口可用性
先确认本地PHP服务正常启动,再用Postman等工具模拟POST请求调用http://10.0.2.2/login/login.php,传入email和password参数,确认接口本身可以正常返回结果,排除后端问题。
- 验证后端接口可用性
内容的提问来源于stack exchange,提问作者Adel Rawass
相关产品推荐
相关产品推荐

