2010-05-07 11 views
9

Come posso utilizzare il servizio Android per effettuare una richiamata ping? Ho bisogno di aprire una pagina web con un clic del pulsante, ma in background, andare a pingare un altro url per la raccolta delle statistiche.Servizio Android - Ping URL

frammenti di codice sarà molto utile

Grazie Chris

risposta

16

Penso che se si desidera solo per il ping di un URL, è possibile utilizzare questo codice:

try { 
    URL url = new URL("http://"+params[0]); 

    HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
    urlc.setRequestProperty("User-Agent", "Android Application:"+Z.APP_VERSION); 
    urlc.setRequestProperty("Connection", "close"); 
    urlc.setConnectTimeout(1000 * 30); // mTimeout is in seconds 
    urlc.connect(); 

    if (urlc.getResponseCode() == 200) { 
     Main.Log("getResponseCode == 200"); 
     return new Boolean(true); 
    } 
} catch (MalformedURLException e1) { 
    e1.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

E, se si desidera per avere l'equivalente di un ping, puoi inserire un System.currentTimeMillis() prima e dopo la chiamata e calcolare la differenza.

speranze che aiuta

frammento di codice trovati in here

+0

Ciò sta funzionando bene per me tranne che per Android 4 dispositivi in ​​cui viene a mancare sempre. Qualche idea? – dee

+9

È necessario spostare la chiamata dalla discussione principale. Android 4 non applica alcuna chiamata di rete sul thread principale per prevenire problemi di ANR. –

+2

Stabilirà una connessione TCP con un handshake completo a 3 vie. Quindi il tempo non è niente come un ping ('ICMP-echo -> ICMP-reply') –