Android Okhttp asynchrone Aufrufe
Ich bin versucht, die Okhttp-Bibliothek eine Verbindung zu meinem android-app auf meinem server via API.
Mein api-Aufruf geschieht auf eine Schaltfläche klicken und ich erhalte die folgende android.os.NetworkOnMainThreadException. Ich verstehe, dass dies ist aufgrund der Tatsache ich bin versucht network Anrufe auf dem Haupt-thread, aber ich bin auch kämpfen, um zu finden eine saubere Lösung, die auf android -, wie stellen Sie diesen code verwenden anderen thread (asynchrone 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 exception wird geworfen auf der Linie
Response response = client.newCall(request).execute();
Ive auch gelesen, dass Okhhtp unterstützt Asynchrone Anfragen, aber ich kann wirklich nicht finden, eine saubere Lösung für android, wie die meisten scheinen eine neue Klasse, die verwendet AsyncTask<>??
Jede Hilfe oder Anregungen geschätzt, danke...
InformationsquelleAutor jjharrison | 2016-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Senden Sie eine asynchrone Anforderung, verwenden Sie diese:
& rufen Sie es auf diese Weise:
try {...} catch (IOException e) {...}
und natürlichdoGetRequest(String url) throws IOException{
Try.. catch behandelt die Fehler, ausgelöst durch die
doGetRequest
'sIOException
Danke. Du hast Recht
String res = response.body().string();
blockiert werden, wenn das response-Körper ist groß und nicht sofort verfügbar (so man es zu tun in einem separaten threadpool für blockierende Operationen). Außerdem – es wäre eine gute Idee, wickeln Sie es intry (Response res = response)
um sicherzustellen, die Antwort ist geschlossen, wenn zB. es gibt keinen Körper, in es.InformationsquelleAutor Mohammed Aouf Zouag