Я пытаюсь реализовать ping с использованием HttpGet, но поведение случайное.Случайное поведение API HttpGet Android
Я имею следующий код, который проверить подключение к интернету/сервер:
boolean result = false;
HttpGet request = new HttpGet("www.MyServer.com");
HttpParams httpParameters = new BasicHttpParams();
HttpClient httpClient = new DefaultHttpClient(httpParameters);
try
{
HttpConnectionParams.setConnectionTimeout(httpParameters, 6000);
HttpConnectionParams.setSoTimeout(httpParameters, 6000);
HttpResponse response = httpClient.execute(request);
int status = response.getStatusLine().getStatusCode();
if (status == HttpStatus.SC_OK)
{
result = true;
}
}
catch(Exception e)
{
e.printStackTrace();
result = false;
}
Log.d("App", "Ping Result:"+result);
Над кодом я работает в потоке, как это может занять некоторое время. Когда я запускаю этот тест в первый раз, я получаю результат как истинный, но затем, когда поведение случайное, несколько раз оно давало мне ошибку «host unreachable», и я получаю результат как false.
Я просто хочу проверить, доступен ли сервер из настроенной в настоящее время сети Android.
Есть ли надежный API для проверки подключения к Интернету/серверу?
ОБНОВЛЕНИЕ:
В службе я следующую функцию, которая инициирует тест.
void startTest()
{
ServerTestThread mServerTestThread = new ServerTestThread()
mServerTestThread.start();
}
class ServerTestThread extends Thread
{
boolean result = false;
public void run()
{
//HttpGet code
//Send Message TO GUI Thread with result.
}
}
Над startTest
функция создает экземпляр тестовой нити и вызова функции запуска. когда тест сделан, я отправляю сообщение в основной поток, содержащий результат.
Спасибо.
Спасибо за ответ, но почему он работает в первый раз. если тайм-аут меньше, то он также должен потерпеть неудачу в первый раз. Нужно ли добавлять какую-то очистку, так как этот код вызывается в потоке. – User7723337
можете ли вы опубликовать код, чтобы я видел, как вы запускаете поток? – Caner
См. Мой обновленный вопрос. – User7723337