无法从 Android 应用程序连接到本地主机 API

新手上路,请多包涵

我是 Django 的新手。我创建了一个名为 http://127.0.0.1:8000/api/update/1/ 的 API,它可以在浏览器和 Postman 应用程序中完美运行。

但是,当我尝试从 Android 应用程序访问 API 时,它返回 NULL。

当 API 如下时,android 代码有效。

 http://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=8190df9eb51445228e397e4185311a66

但是,当 API 为以下时,它不起作用,即使以下 API 在同一台 PC 上运行的浏览器和 Postman 应用程序中运行良好。

 http://127.0.0.1:8000/api/update/1/

我附上了进行 API 调用的代码。

 protected String doInBackground(String... args) {
    String xml = "";
    String api = "http://127.0.0.1:8000/api/update/1/"; // returns NULL works in Postman app and in the browser
    // String api = "http://newsapi.org/v1/articles?source=bbc-news&sortBy=top&apiKey=8190df9eb51445228e397e4185311a66"; // works in all places
    String urlParameters = "";
    xml = Function.excuteGet(api, urlParameters);
    return  xml;
}

谁能帮我这个?提前致谢。

原文由 Mazharul Islam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 352
2 个回答

如果您从真实的 Android 设备测试您的应用程序,那么您需要在尝试通过 API 连接到 Django 服务器时输入您的 PC 的 IP 地址。是的,您也需要在同一个网络中。因此,您需要检查以下事项。

  1. 确保 PC(运行服务器的地方)和 Android 设备(测试应用程序的地方)在同一个网络中(可能连接到同一个 Wifi 网络)。
  2. 确保您连接到运行服务器的 PC 的 IP 地址。例如,现在,您的 PC 的 IP 地址是 192.168.0.100 。然后,您需要连接到此 IP 地址并调用您的 API,如下所示。
    http://192.168.0.100:8000/api/update/1/

  1. 确保您在 PC 中接受对端口 8000 的请求。检查您的防火墙配置是否阻止对 8000 端口的任何传入请求。如果发现阻塞,请使用以下命令允许对 8000 端口的传入请求。
    sudo ufw allow 8000/tcp

如果没有任何帮助,请检查您的 Android 代码以检查 API 调用是否正常。我强烈建议使用 Volley 进行 开发人员文档中建议 的 API 调用。

最后但并非最不重要的一点是,请检查您的 AndroidManifest.xml 文件是否具有必要的权限。您需要添加以下权限以授予您的应用程序使用互联网。

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

原文由 Reaz Murshed 发布,翻译遵循 CC BY-SA 4.0 许可协议

为了能够连接您的本地主机(我假设您使用的是模拟器,如果没有,我可以编辑答案)

您需要使用以下网址:

 http://10.0.2.2:8000/

原文由 keser 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题