检查服务器连接

时间:2014-06-06 03:25:14

标签: android connection urlconnection

无论是关闭还是关闭,我都需要测试服务器连接。我正在使用下面的代码但它总是显示错误“--checkServerConnected NO--”即使我输入了正确的URL。

public void checkServerConnected() {
    try{
        URL myUrl = new URL("http://www.google.co.uk");
        URLConnection connection = myUrl.openConnection();
        connection.setConnectTimeout(2000);
        connection.connect();
    } catch (Exception e) {
        Log.e("--","--checkServerConnected NO-- ");
    }
}

4 个答案:

答案 0 :(得分:0)

您是否在清单文件中添加了Internet权限。

<uses-permission android:name="android.permission.INTERNET" />

如果您使用Internet权限,那么请更改您的方法。因为服务器相关的操作没有在主Thread上执行。所以将它放在一个线程上。

public void checkServerConnected() {
        new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub

                try{
                    URL myUrl = new URL("http://www.google.co.uk");
                    URLConnection connection = myUrl.openConnection();
                    connection.setConnectTimeout(2000);
                    connection.connect();
                } catch (Exception e) {
                    Log.e("--","--checkServerConnected NO-- ");
                }
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        // TODO Auto-generated method stub
                        Toast.makeText(getApplicationContext(), "Connected to server", 1000).show();
                    }
                });
            }
        }).start();

    }

答案 1 :(得分:0)

也许你在主线程中调用这个方法?自Android OS4.0以来,Web操作不能在主线程中,请确保在子线程中调用此方法。

答案 2 :(得分:0)

使用HttpURLConnection取代URLConnection。您可以轻松获得不同条件的响应代码。当响应代码200,那么您的服务器就绪。

答案 3 :(得分:0)

检查您是否在清单文件中添加了权限

此外,您无法在主线程上执行网络操作。因此要么将此代码放在新线程中,要么从线程调用该函数。

如果它仍然不起作用,那么尝试使用Apache的HTTP库中的类

try {
    HttpPost post = new HttpPost(SERVER_URL);
    HttpClient client = new DefaultHttpClient();
    HttpResponse response = client.execute(post);
    Log.e("Server Response", response.getStatusLine().toString());
} catch (Exception e) {
    e.printStackTrace();
}