6
Okhttpライブラリを使用して、アンドロイドアプリをAPI経由でサーバーに接続しようとしています。Android Okhttp非同期呼び出し
ボタンクリックでAPI呼び出しが発生し、次のメッセージが表示されます。android.os.NetworkOnMainThreadException。私はこれがメインスレッドでネットワークコールを試みているという事実に気付いていますが、このコードで別のスレッド(非同期呼び出し)を使用する方法については、アンドロイドのクリーンなソリューションを見つけるのにも苦労しています。上記
@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();
}
私のコードで、例外がライン上でスローされている
Response response = client.newCall(request).execute();
アイブ氏はまた、Okhhtpが非同期リクエストをサポートしていますが、私は本当にほとんどのようアンドロイドのためのクリーンな解決策を見つけることができないことを読んでAsyncTask <>を使用する新しいクラスを使用しているようですか?
すべてのヘルプや提案が非常に、ありがとうを高く評価している...
ありもちろんdoGetRequest(String url)はIOExceptionをスローする{' –
@ V.Kalyuzhnyu try .. catchはエラーを投げたbを処理しますy 'doGetRequest'の' IOException' – kirtan403
ありがとうございます。あなたは正しいです –