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

Flutter Rest API调用在Android端无法正常工作求助

排查Flutter Android端无法发送网络请求的方案

你的AndroidManifest配置已经包含了必要的INTERNET权限和android:usesCleartextTraffic="true"(解决明文HTTP请求限制),结合iOS和Postman正常的情况,从以下几个方向排查:

  • 模拟器网络地址问题
    如果服务器运行在本地开发机,Android模拟器里的localhost或127.0.0.1指向模拟器自身而非你的电脑。把请求地址换成10.0.2.2(Android Studio默认模拟器的宿主机映射地址),或者你的电脑在局域网中的实际IP(比如192.168.x.x)。

  • 网络安全配置补充(Android 9+)
    即使设置了usesCleartextTraffic="true",部分场景下仍需明确配置网络安全规则。在res/xml目录下创建network_security_config.xml,内容如下:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="system" />
            </trust-anchors>
        </base-config>
    </network-security-config>
    

    然后在AndroidManifest的application标签中添加引用:

    android:networkSecurityConfig="@xml/network_security_config"
    
  • 代理设置干扰
    检查Android模拟器/真机是否开启了HTTP代理。如果Postman未使用代理,但设备开启的代理不可用,会导致请求失败。可在设备设置中关闭代理,或确保代理能正常访问目标服务器。

  • 服务器绑定地址限制
    确认服务器是否仅绑定了127.0.0.1(仅允许本地访问)。如果是,修改服务器监听地址为0.0.0.0,这样局域网内的设备(包括Android真机/模拟器)才能访问到。

  • Flutter请求客户端的配置
    检查你使用的HTTP客户端(比如http或dio)是否有配置错误,比如baseUrl写错、请求头设置异常。可以用最基础的GET请求测试,排除客户端封装的问题:

    import 'package:http/http.dart' as http;
    
    void testRequest() async {
      try {
        final response = await http.get(Uri.parse("你的服务器地址"));
        print(response.statusCode);
        print(response.body);
      } catch (e) {
        print("请求错误: $e");
      }
    }
    

内容的提问来源于stack exchange,提问作者MertYavuz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:25:11