Ich versuche, die Okhttp-Bibliothek zu verwenden, um meine Android-App über API mit meinem Server zu verbinden.Android Okhttp asynchrone Anrufe
Mein api Anruf geschieht auf eine Schaltfläche klicken und erhalte ich die folgende android.os.NetworkOnMainThreadException. Ich verstehe, dass dies aufgrund der Tatsache ist, dass ich Netzwerkanrufe auf dem Hauptthread versuche, aber ich habe auch Mühe, eine saubere Lösung auf Android zu finden, wie dieser Code einen anderen Thread verwenden (Async-Aufrufe).
@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();
}
Oben ist mein Code, und die Ausnahme auf der Linie geworfen wird
Response response = client.newCall(request).execute();
Ive auch gelesen, dass Okhhtp Async-Anforderungen unterstützt, aber ich kann es wirklich nicht eine saubere Lösung für Android wie die meisten finden scheint eine neue Klasse zu verwenden, die verwendet AsyncTask <> ??
Jede Hilfe oder Anregungen sind sehr willkommen, danke ...
Es gibt keine Notwendigkeit in 'try {...} catch (IOException e) {...}' und natürlich 'doGetRequest (String url) löst IOException {' –
@ V.Kalyuzhnyu Try .. catch wird den Fehler geworfen werfen b y die "doGetRequest" 'IOException' – kirtan403
Danke. Sie haben Recht –