Flutter Rest API调用在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

