android - 在本地托管服务器供 Android 应用程序使用时,我需要做任何端口转发吗?

标签 android localhost ports

所以我想在实际的 Android 设备上测试我的应用程序。我已经在虚拟设备上对其进行了调试并且运行顺利,但我希望它现在能够在实际手机上运行以进行调试等等。我将用于访问本地托管服务器的 IP 从 10.0.2.2 更改为我自己的 IP。所以每次我调用我的应用程序查询的服务器时,它来自:

HttpPost httpPost = new HttpPost("http://10.0.2.2/pagemyappwants.php");

HttpPost httpPost = new HttpPost("http://76.blahblah.etc/pagemyappwants.php");

后者是我自己电脑的 IP,过去我用它来运行远程访问的服务器。我已经为我正在运行的 wamp/apache 服务器测试了这个,使用这个 IP 你可以从其他计算机访问 php 页面。但是,当我尝试使用我的应用程序时,该应用程序卡住了几分钟,然后就好像任务已完成一样继续前进,但是当检查将记录通过该应用程序进行的更改/添加的 mysql 数据库时,没有任何反应.

所以总而言之,为了让供 Android 使用的本地托管服务器正常工作,我需要做任何端口转发吗?或者其他什么,就此而言,哪个可以解决这个问题?谢谢。

最佳答案

您的描述似乎不是很清楚,但如果我正确理解您的应用程序正在通过您的公共(public) IP 地址通过公共(public)网络向您自己的 PC 发出 HTTP 调用,那么唯一需要打开的端口是端口 80 (假设是非安全 HTTP)。

您说“应用会卡住几分钟,然后继续前进,就好像任务已完成”。您实际上是指分钟,还是很多秒?如果是分钟,这听起来不太对,因为 HTTP 超时时间不长。

如果是我,我会:

  • 对 HTTP 调用进行一些跟踪/调试,以查看到底发生了什么,尤其是抛出了什么异常,或者返回了什么结果。听起来好像超时了,但您没有提到异常,这让我认为您的应用现在正在正确处理异常。

  • 我会尝试使用设备上的浏览器访问 HTTP URL,看看它是否真的可以访问它。

  • 检查端口转发。默认情况下,通常不会将路由器配置为处理传入的 HTTP 请求,因为这会带来安全风险。如果您之前设置过它,但它现在不起作用,是否可能是因为您的 PC 具有不同的 IP 地址,从路由器到您 PC 的端口转发失败?

关于android - 在本地托管服务器供 Android 应用程序使用时,我需要做任何端口转发吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021385/

相关文章:

java - 如何让容易出错的忽略我生成的源代码?

mysql - $ mysql -u root -p -h 127.0.0.1 输入密码 : ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

eclipse - 为什么 Eclipse 在本地主机端口 13405 上运行 Web 应用程序?

regex - 雷博尔能做到吗?

android - 使用 Android NFC 向 Java Card 发送超过 261 个字节

Android:如何基于图表引擎库在绘图轴中创建负值?

android - 编译 MuPDF

html - Chrome 无法播放 .mp4 文件

dns - 创建本地自定义主机名而不是 localhost?

hadoop - sudo jps找不到MapReduce jobtracker