【问题标题】:Timed Out Exception ( Sending Data From Android To PHP Page )超时异常(将数据从 Android 发送到 PHP 页面)
【发布时间】:2012-01-19 16:50:45
【问题描述】:

我现在正在尝试将数据从 android 应用程序(带有模拟器)发送到 Web 服务器(一个 php 页面)。首先,我用模拟器尝试了这个程序,它运行成功。之后,我用电话尝试了这个程序,但发生了异常:

--> IO 异常:操作超时。

我的代码的一部分:

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost("http://192.168.1.33:90/takeDatas.php");
try {                   
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("enlem", latitude ));
    nameValuePairs.add(new BasicNameValuePair("boylam", longitude ));
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    httpclient.execute(httppost);

} catch (ClientProtocolException e) {
    Toast.makeText(ReportLocationActivity.this, "Client protokol exception ", Toast.LENGTH_LONG).show();
} catch (IOException e) {
    Toast.makeText(ReportLocationActivity.this, "IO exception "+e.getMessage(), Toast.LENGTH_LONG).show();
}

我希望你能帮助我。 提前致谢。

【问题讨论】:

  • 不,我只看到这个例外。
  • 您是否检查过您的网络服务器是否正确地监听了您机器上的端口 90?
  • 尝试在您的手机浏览器中访问 PHP 页面,它会加载吗?如果您的手机不在同一个网络上,则无法访问主机,因为它使用的是私有 IP 地址。
  • @molnarm- 是的,我的手机浏览器无法连接到我的 php 页面。我能做什么?
  • @MisterSquonk - 是的,我的网络服务器正在正确监听我电脑上的端口 90。 (这个程序在模拟器上运行顺利)

标签: android http exception send


【解决方案1】:

10.0.2.2 是模拟器归属于主机的 IP。

一般来说,10.x.x.x 是private IP block 的一部分。

所以您必须将服务器托管在运行模拟器的同一台机器上?这是我可以看到它在模拟器中工作的唯一方法。

无论如何,您的应用需要您的服务器的实际 IP,如果您希望它在您的网络之外工作,您将需要您的公共 IP(找到您的here)和设置端口如果您有路由器,则转发端口 90。 This site 非常混乱,但有大量路由器特定指令。

【讨论】:

  • 同意 @iremce 使用本地主机而不是静态 IP。如果您无法获得静态 IP,请使用动态 IP 服务,例如 dyn-dns.com
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多