Sto tentando di utilizzare la libreria Okhttp per collegare la mia app Android al mio server tramite API.Chiamate asincrone Android Okhttp
La mia chiamata API sta accadendo con un clic del pulsante e sto ricevendo il seguente android.os.NetworkOnMainThreadException. Capisco che questo è dovuto al fatto che sto tentando di effettuare chiamate di rete sul thread principale, ma sto anche cercando di trovare una soluzione pulita su Android per far sì che questo codice usi un altro thread (chiamate asincrone).
@Override
public void onClick(View v) {
switch (v.getId()){
//if login button is clicked
case R.id.btLogin:
try {
String getResponse = doGetRequest("http://myurl/api/");
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
String doGetRequest(String url) throws IOException{
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
In alto è il mio codice, e l'eccezione viene gettata sulla linea
Response response = client.newCall(request).execute();
Ive anche letto che Okhhtp supporta le richieste asincrone ma davvero non riesce a trovare una soluzione pulita per Android come la maggior parte sembra utilizzare una nuova classe che utilizza AsyncTask <> ??
Qualsiasi aiuto o suggerimenti sono molto apprezzati, thankyou ...
C'è non c'è bisogno di 'try {...} catch (IOException e) {...}' e ovviamente 'doGetRequest (String url) genera IOException {' –
@ V.Kalyuzhnyu Try .. catch gestirà l'errore gettato b y 'DoGetRequest''s' IOException' – kirtan403
Grazie. Hai ragione: –