注意:我知道这里已经多次提出过类似的问题,但是没有一个建议的解决方案能解决我的问题(或者我可能错过了正确的解决方案)。
我有一个Android应用程序应该与REST API通信,它也在我的localhost上运行。但是,我无法从设备或模拟器访问API。这些是我尝试过的网址:
有趣的是,我可以从设备的浏览器以及模拟器的浏览器访问API。
请注意,我的设备已连接到与笔记本电脑相同的WiFi,并且我的应用已获得互联网权限:
<uses-permission android:name="android.permission.INTERNET"/>
我认为由于我使用的REST库(Volley)可能会发生此问题,但是我仍然无法使用 java.net 中的标准类来访问API。我从192.168.0.xx获得404,从192.168.1.xx和10.0.2.2获得超时。
我尝试过其他一些事情,例如打开USB网络共享,为我的API使用不同的端口,禁用WiFi和尝试移动数据等等,但这些都没有解决我的问题。
知道这里出了什么问题吗?
答案 0 :(得分:1)
对于访问运行模拟器的开发计算机上的Web应用程序的模拟器,使用10.0.2.2应该有效。
对于其他一切 - 模拟器访问另一台机器或访问任何东西的硬件 - 使用到达该机器的可路由IP地址。
您的192.168.0.xx值似乎是正确的值,因为您收到404错误。获得404的唯一方法是服务器向您发送错误代码。如果您无法连接到服务器,您将获得某种异常,而不是404。
调试为什么您获得404响应,而不是200和所需的Web服务输出,留给读者练习。 : - )