Нет проблем с вашим кодом. Это означает либо:
1) Иногда сервер действительно недоступен
2) Соединение медленное и время ожидания истекло до достижения сервера.
Итак, проверьте время ожидания установки большего значения, такого как 60000 (60 секунд), и проверьте снова. Если это работает, то вы знаете, что это произошло из-за тайм-аута.
EDIT
Также, пожалуйста, внесите это изменение, возможно, оно даст нам больше информации:
Log.d("App", "Status:" + status);
if (status == HttpStatus.SC_OK)
{
result = true;
}
EDIT2
class ServerTestThread extends Thread
{
public static boolean result = false;
public static HttpGet request = new HttpGet("www.MyServer.com");
public static HttpParams httpParameters = new BasicHttpParams();
public static HttpClient httpClient = new DefaultHttpClient(httpParameters);
boolean result = false;
public void run()
{
//HttpGet code
//Send Message TO GUI Thread with result.
}
}
EDIT3
это скажет, если вы подключены к сети:
boolean connected = false;
ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
//we are connected to a network
connected = true;
}
Предупреждение. Если вы подключены к сети Wi-Fi, которая не имеет доступа к Интернету или требует аутентификации на основе браузера, connected
будет по-прежнему иметь значение.
вам понадобится это разрешение в вашем манифесте:
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />