无论是关闭还是关闭,我都需要测试服务器连接。我正在使用下面的代码但它总是显示错误“--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-- ");
}
}
答案 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();
}