安卓真机无法连接本地Apache/Tomcat服务器及RESTful服务求助
我之前也碰到过一模一样的问题,折腾了好一阵才搞定,给你梳理几个关键排查点和解决办法:
先确认服务器监听的地址是否正确
很多新手容易踩这个坑:Apache/Tomcat默认只监听127.0.0.1或者localhost,这只能让本机(包括模拟器,因为模拟器和电脑共用一个网络栈)访问,真机根本连不上。你得改配置让服务器监听所有网卡:- Apache:打开
httpd.conf,找到Listen行,改成Listen 0.0.0.0:80(用默认80端口的话) - Tomcat:修改
server.xml里的<Connector>标签,加上address="0.0.0.0",比如<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" address="0.0.0.0"/>
改完一定要重启服务器!
- Apache:打开
核对电脑的WiFi IP别搞错了
用ipconfig(Windows)查的时候,别选以太网或者虚拟机的IP,要找「无线局域网适配器 WLAN」下面的IPv4地址。先在电脑浏览器里用这个IP访问服务器(比如http://192.168.x.x:8080),确认能打开,再拿真机试。临时关掉电脑防火墙和杀毒软件
这是最容易被忽略的点!Windows Defender或者第三方杀毒软件会直接拦截外部设备访问本地端口。你可以先临时关闭防火墙试试:Windows里搜「Windows Defender防火墙」,选「启用或关闭Windows Defender防火墙」,把专用和公用网络的防火墙都关掉,再用真机访问。如果能连上了,记得给Apache/Tomcat加个防火墙允许规则,别一直裸奔。检查路由器的AP隔离功能
有些路由器默认开了「AP隔离」或者「客户端隔离」,这个功能会阻止同一WiFi下的设备互相访问。进路由器后台(一般是192.168.1.1或者192.168.0.1,看路由器底部标签),找「无线设置」里的隔离选项,把它关掉。用端口扫描工具验证端口状态
可以在手机上装个PortScanner类的工具,扫描电脑IP对应的服务器端口(比如8080)。如果显示端口关闭,要么是服务器没监听对,要么是防火墙挡了;如果端口开放,那可能是安卓应用的配置问题。安卓应用的网络权限和明文访问设置
如果你的服务器用的是HTTP(不是HTTPS),安卓9及以上默认禁止明文网络请求。得在AndroidManifest.xml里给<application>标签加android:usesCleartextTraffic="true",或者在res/xml/network_security_config.xml里配置允许访问你的本地IP。另外,别忘了加<uses-permission android:name="android.permission.INTERNET"/>权限,没这个权限连网都不行。
按这个顺序排查,基本都能解决问题。我当时就是防火墙没关,折腾了快一小时,关掉立马就通了😂
内容的提问来源于stack exchange,提问作者ROM




