无法从Android应用程序访问本地主机

无法从Android应用程序访问本地主机,android,rest,localhost,Android,Rest,Localhost,注意:我知道类似的问题在这里已经被问过好几次了,但是没有一个建议的解决方案为我解决了这个问题,否则我可能会错过正确的解决方案 我有一个Android应用程序,它应该与RESTAPI对话,RESTAPI也在我的本地主机上运行。但是,我无法从设备或模拟器访问API。以下是我尝试过的URL: ... ... ... 有趣的是,我可以从设备的浏览器和emulator的浏览器访问API 请注意,我的设备与我的笔记本电脑连接到同一个WiFi,并且我在我的应用程序中具有internet权限: <uses

注意:我知道类似的问题在这里已经被问过好几次了,但是没有一个建议的解决方案为我解决了这个问题,否则我可能会错过正确的解决方案

我有一个Android应用程序,它应该与RESTAPI对话,RESTAPI也在我的本地主机上运行。但是,我无法从设备或模拟器访问API。以下是我尝试过的URL:

... ... ... 有趣的是,我可以从设备的浏览器和emulator的浏览器访问API

请注意,我的设备与我的笔记本电脑连接到同一个WiFi,并且我在我的应用程序中具有internet权限:

<uses-permission android:name="android.permission.INTERNET"/>
我认为这个问题可能是因为我使用了Volley的REST库造成的,但是我仍然无法通过使用java.net中的标准类来访问API。我从192.168.0.xx获得404,从192.168.1.xx和10.0.2.2获得超时

我尝试过其他方法,比如打开USB连接,为API使用不同的端口,禁用WiFi,尝试移动数据等,但都没有解决我的问题


知道这里出了什么问题吗?

使用10.0.2.2应该可以,因为仿真器在运行仿真器的开发机器上访问Web应用

对于其他任何事情——模拟器访问另一台机器,或硬件访问任何东西——使用到达该机器的可路由IP地址

您的192.168.0.xx值似乎是正确的,因为您得到的是404错误。只有当服务器向您发送错误代码时,您才能获得404。如果无法连接到服务器,则会出现某种异常,而不是404


调试为什么会得到404响应,而不是200响应和所需的Web服务输出,留给读者作为练习:-

如果您得到的是404,那么您正在连接到服务器。您的服务器不喜欢该URL。查看您的服务器日志,查看您的客户端请求的URL。这是非常有价值的反馈,谢谢。事实证明,由于缺少对javax.el-api的依赖关系,服务器中抛出了ValidationException,而我使用的RestEasy是Jetty应用程序,它没有记录在任何地方。我在添加拦截器后发现了这一点。添加依赖项后,一切正常。根据记录,由于缺少对javax.el-api的依赖项,这是服务器中的一个验证异常。事实证明,我需要更好地登录我的RESTAPI,因为它没有记录在任何地方,所以我完全错过了它。