Android Httpget超时

时间:2011-09-14 14:06:54

标签: php android mysql http-get

我正试图通过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的调用?

只是猜测,会感激任何帮助。

3 个答案:

答案 0 :(得分:1)

可能重复的答案

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我在这里松散地使用语言: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处可见。