当前位置: 首页 > 知识库问答 >
问题:

无法从Android应用程序连接到localhostAPI

雷锋
2023-03-14

我是Django的新手。我已经创建了一个名为http://127.0.0.1:8000/api/update/1/,它在浏览器和邮递员应用程序中都能完美运行。

然而,当我试图从Android应用程序访问API时,它返回NULL。

当API如下所示时,android代码可以工作。

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

但是,当API为以下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;
}

有人能帮我吗?提前感谢。

共有3个答案

荀俊迈
2023-03-14

请使用以下命令运行django开发服务器。

python manage.py runserver 0.0.0.0:8000

运行后,在新的终端窗口中,使用以下命令查找wifi/网络子网中计算机的ip地址

Ipconfig or ifconfig (depends on your OS)

然后将api的基本url从127.0.0.1更改为在上述步骤中找到的ip。现在,将正在测试应用程序的android手机连接到运行django的计算机所连接的wifi或网络。现在您可以请求并接收响应。

127.0.0.1是您系统的主页,您的android应用程序将无法访问该主页。你需要这样做。

苏法
2023-03-14

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

您需要使用以下网址:

http://10.0.2.2:8000/
邵鸿福
2023-03-14

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

>

http://192.168.0.100:8000/api/update/1/

确保您正在接受对电脑中端口8000的请求。检查您的防火墙配置是否阻止了对8000端口的任何传入请求。如果发现阻塞,请使用以下方法允许传入请求到8000端口。

sudo ufw allow 8000/tcp

如果没有什么帮助你,那么请检查你的Android代码,以检查API调用是否正常。我强烈建议使用Volley的API调用建议在开发人员留档。

最后,但并非最不重要的,请检查如果你有必要的权限在你的Androidanifest.xml文件。您需要添加以下权限来授予您的应用程序使用Internet。

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 类似资料:
  • 免责声明:我知道人们通常不会这样做,我使用SQL数据库是出于成本原因,而且我对编程比较陌生。 我正在尝试从我的Android Studio应用程序向我的MariaDB数据库发送SQL脚本。我目前正在为MariaDB实现一个Java数据库连接(JDBC)驱动程序,但我不确定需要包括什么。 我去了JDBC MariaDB驱动程序的下载网站,但是有很多jar文件,我可以选择下载。你怎么知道你需要哪一个,

  • 尝试使用主连接字符串和用户名(数据库名)连接到cosmosdb Mongo API 原因:com.mongodb.mongotieoutexception:在等待与com.mongodb.client.internal.mongoclientdelegate$1@3C291AAD匹配的服务器时,在30000 ms后超时。群集状态的客户端视图是{type=replica_set,servers=[{

  • 我生成了一个。我的SpringMVC Maven Hibernate MySQL应用程序的war文件,该应用程序在本地主机和本地MySQL数据库上运行良好。我配置数据库的方式是通过WebAppConfig。查看应用程序的java文件。属性文件并检索适当的信息。 然后我创建了一个OpenShift帐户并部署了它。war文件。我添加了MySQL和PHPMyAdmin盒带,以便维护数据库。当我试图通过我

  • 生成图像时出错 我激活了USB调试工具。当我尝试在命令提示符中运行adb设备命令时,它什么也没有给我。

  • 示例代码: 客户端日志: 13/02/06 10:58:32信息zookeeper.clientcnxn:服务器192.168.113.27/192.168.113.27:2181上完成会话建立,sessionid=0x13CAE4BD91B0003,协商超时=40000