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

问题描述:

注意:我知道在这里已经多次提出了类似的问题,但是没有一个建议的解决方案为我解决问题(或者我可能错过了正确的解决方案)。无法从Android应用程序访问本地主机

我有一个Android应用程序,该应用程序应该与REST API进行通信,该应用程序也在本地主机上运行。但是,我无法从设备或模拟器访问API。这是我曾尝试网址:

有趣的是,我可以从设备的浏览器访问API,以及也来自仿真器的浏览器。

请注意,我的设备连接到相同的WiFi我的笔记本电脑,和我有互联网的权限在我的应用程序:

<uses-permission android:name="android.permission.INTERNET"/> 

我想这个问题可能是由于我使用REST库发生(排球),但是我仍然无法使用java.net中的标准类访问API。我从192.168.0.xx获得404,并从192.168.1.xx和10.0.2.2超时。

我试过其他的东西,例如打开USB绑定,使用不同的端口为我的API,禁用WiFi和尝试通过移动数据等,但他们都没有解决我的问题。

任何想法这里怎么了?

+1

如果你得到一个404,那么你连接到你的服务器。你的服务器不喜欢这个URL。查看您的服务器日志,以查看您的客户端请求的URL。 – CommonsWare

+0

这是有价值的反馈,谢谢。事实证明,由于缺少对javax.el-api的依赖关系,因此未在任何地方记录依赖关系(我正在使用RestEasy并且它是​​Jetty应用程序),因此在服务器中抛出了ValidationException。我在添加拦截器后发现了这一点。一切工作正常后添加依赖项。 – Egemen

对于访问运行模拟器的开发机器上的Web应用程序的模拟器,使用10.0.2.2应该可以工作。

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

您的192.168.0.xx值看起来是正确的,因为您收到404错误。如果服务器将错误代码发送给您,唯一的方法是获得404。如果您无法连接到服务器时,你会得到某种异常,而不是404

调试为什么你得到一个404响应,而不是200和所需的Web服务的输出,留作为读者锻炼。 :-)

+0

为了记录,这是由于缺少对javax.el-api的依赖性而导致的服务器验证异常。原来,我需要更好地登录我的REST API,因为这没有记录到任何地方,所以我完全错过了它。 – Egemen