You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:45:04