Volley POST StringRequest无响应,已确认网络权限与URL正常问题求助
Android Volley POST请求失败排查方案
1. 适配高版本Android明文请求限制
Android 9(API 28)及以上系统默认禁止HTTP明文请求,若你的server_url为http开头而非https,请求会被系统直接拦截。
解决方法二选一:
- 将服务端接口升级为HTTPS协议
- 在
AndroidManifest.xml的application节点添加属性:
android:usesCleartextTraffic="true"
2. 修正错误的请求头配置
你手动添加的Content-Type请求头格式存在语法错误,多余的转义引号会导致服务端无法正常解析请求参数,且Volley发送application/x-www-form-urlencoded类型请求时会自动拼接正确的请求头,不需要手动配置。
直接删除代码中的getHeaders()重写方法即可。
3. 补充日志定位具体错误
当前代码仅弹出通用错误提示,无法判断错误根因,分别在成功、失败回调中添加日志打印,从Logcat中查看详细信息:
错误回调补充日志:
@Override public void onErrorResponse(VolleyError error) { Log.e("VOLLEY_ERROR", "错误类型: " + error.toString()); if (error.networkResponse != null) { Log.e("VOLLEY_ERROR", "服务端响应码: " + error.networkResponse.statusCode); Log.e("VOLLEY_ERROR", "服务端返回内容: " + new String(error.networkResponse.data)); } Toast.makeText(MainActivity.this, "Hubo un error", Toast.LENGTH_SHORT).show(); error.printStackTrace(); }
成功回调补充日志:
@Override public void onResponse(String response) { Log.d("VOLLEY_RESPONSE", "服务端返回内容: [" + response + "]"); // 先去除返回内容前后的空白字符再比对,避免服务端返回多余换行、空格导致匹配失败 if (response.trim().equalsIgnoreCase("exitoso")) { Intent intent = new Intent(MainActivity.this, Home.class); startActivity(intent); finish(); } else { Toast.makeText(MainActivity.this, "Todo mal", Toast.LENGTH_SHORT).show(); } }
4. 排查模拟器网络问题
- 打开模拟器自带浏览器,直接访问你的
server_url地址,确认模拟器本身可以正常访问该接口 - 若你的服务端部署在本机,不要使用
127.0.0.1作为请求IP,模拟器访问宿主机的固定IP为10.0.2.2,需将server_url中的IP替换为该值
5. 校验请求参数
在getParams()方法中添加日志,确认获取到的email、password参数值和你在Postman中提交的参数完全一致,避免空值、多余空格、大小写错误等问题。
6. 调整请求超时配置
Volley默认超时时间较短,可在请求加入队列前添加重试策略,避免网络波动导致请求失败:
stringRequest.setRetryPolicy(new DefaultRetryPolicy( 10000, // 超时时间设为10秒 DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT )); RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this); requestQueue.add(stringRequest);
7. 确认网络权限配置
检查AndroidManifest.xml中是否在application节点外层正确配置了网络权限:
<uses-permission android:name="android.permission.INTERNET" />
内容的提问来源于stack exchange,提问作者sacosta
相关产品推荐
相关产品推荐

