【问题标题】:Android Httpget time outAndroid Httpget 超时
【发布时间】:2011-09-14 14:06:53
【问题描述】:

我正在尝试通过 php 脚本从 MySQL 数据库中获取一些数据。 我的代码是: `

            HttpClient httpclient = new DefaultHttpClient();

            HttpGet httpget = new HttpGet("http://example.com/fscript.php");
            HttpResponse response= null;
            System.out.println(httpget.toString());
            try{
               response= httpclient.execute(httpget); 
            }catch(Exception e){
               e.printStackTrace();
            }

而且我总是在 LogCat 和 StackTrace 中遇到超时:

java.net.SocketException: The operation timed out

当我使用相同的代码但指向http://10.0.2.2:90/fscript.php(我的开发机器中的服务器)时,它工作正常,所以我认为与远程服务器有关。 当我在浏览器中写入地址时,它会返回我的脚本返回的 json 字符串,所以我猜问题也不在于 php。 在我的清单中,我在应用程序中拥有 Internet 权限,我还需要其他东西吗? 或者也许这是我必须在我的网络服务器中配置的东西才能接受来自 android 的调用?

只是猜测,将不胜感激。

【问题讨论】:

    标签: php android mysql http-get


    【解决方案1】:

    可能重复的答案

    发生这种情况是因为有时您的服务器响应时间过长。实际上,这也可能是由于网络速度慢而发生的,因此您无法完全控制它。如果您使用的是 HttpClient,则可以增加超时时间:

    java.net.socketexception: The operation timed out problem in android?

    【讨论】:

    • 很抱歉,如果重复,我会尝试延长超时时间,如果是问题所在,我会通知您。谢谢
    【解决方案2】:

    您的网络服务器根本不在乎呼叫来自 Android 设备。它只是看到一个 HTTP 请求进来并相应地处理它。我会首先调查您的 Android 设备是否真的能够访问非本地地址。例如也许防火墙阻止了请求。如果这是在 Android 模拟器中,请确保其网络桥接配置正确。

    【讨论】:

      【解决方案3】:

      我在这里粗略地使用语言:10.0.2.2 是 Android 的 localhost,它指向您机器上的 127.0.0.1。因此,如果您的脚本从 http://127.0.0.1:90/fscript.php 运行,那么它应该在 Android 上的 http://10.0.2.2:90/fscript.php 可见。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 2012-08-29
        • 1970-01-01
        • 2015-11-13
        相关资源
        最近更新 更多