Próbuję użyć biblioteki Okhttp do podłączenia mojej aplikacji na Androida do mojego serwera za pośrednictwem interfejsu API.Wywołania asynchroniczne Android Okhttp
Moje wywołanie api dzieje się na kliknięcie przycisku i otrzymuję następujący android.os.NetworkOnMainThreadException. Rozumiem, że jest to spowodowane faktem, że próbuję wywoływać połączenia sieciowe w głównym wątku, ale ja także staram się znaleźć czyste rozwiązanie na Androidzie, jak sprawić, by ten kod korzystał z innego wątku (wywołania asynchroniczne).
@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();
}
Powyżej jest mój kod, a wyjątek jest rzucony na linii
Response response = client.newCall(request).execute();
Ive przeczytać również, że Okhhtp obsługuje żądania ASYNC ale naprawdę nie mogę znaleźć czyste rozwiązanie dla Androida jak najbardziej wydaje się używać nowej klasy, która używa AsyncTask <>?
Każda pomoc lub sugestie są mile widziane, Dziękuje ...
Istnieje nie ma potrzeby w 'try {...} catch (IOException e) {...}' i oczywiście 'doGetRequest (String url) wyrzuca IOException {' –
@ V.Kalyuzhnyu Spróbuj ... catch obsłuży błąd rzucony b y '' DoGetRequest'' 'IOException' – kirtan403
Dzięki. Masz rację: –