React Native使用Axios发POST请求 替换服务端IP仍报Network Error求助
解决步骤
- 补充4000端口的adb反向代理
你当前只做了RN打包服务8081端口的反向代理,没有转发接口服务对应的4000端口,执行以下命令即可:
adb -s <mydevice> reverse tcp:4000 tcp:4000
配置完成后你甚至可以直接把APIUrl改回http://localhost:4000/api/v1,反向代理会自动把手机端的localhost请求转发到电脑本地的对应端口。
- 配置安卓网络安全策略
安卓9(API Level 28)及以上版本默认禁止所有明文HTTP请求,你的接口用的是HTTP协议,需要手动配置允许明文请求:
- 在
android/app/src/main/res/xml目录下新建network_security_config.xml文件,写入以下内容:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config cleartextTrafficPermitted="true"> <!-- 允许访问本地服务IP,也可以直接写<base-config cleartextTrafficPermitted="true"/>放开所有明文请求 --> <domain includeSubdomains="true">192.168.12.4</domain> <domain includeSubdomains="true">localhost</domain> </domain-config> </network-security-config>
- 打开
android/app/src/main/AndroidManifest.xml,在<application>标签中添加属性:
android:networkSecurityConfig="@xml/network_security_config"
- 检查本地防火墙规则
Windows系统默认会阻止外部设备访问本地端口,你可以临时关闭防火墙测试请求是否正常,也可以手动添加入站规则,允许4000端口的TCP连接。 - 验证网络连通性
先在物理安卓设备自带的浏览器中访问http://192.168.12.4:4000,如果无法打开说明是网络层面不通,和RN、Axios配置无关,需要先确认手机和电脑处于同一局域网下、IP地址填写正确。
内容的提问来源于stack exchange,提问作者Julius Guevarra
相关产品推荐
相关产品推荐

