0

以下に示すプロジェクトのgradleファイルに依存関係を指定しました。

「com.google.code.gson:gson:2.4」をコンパイルします

「com.squareup.okhttp3:okhttp:3.1.2」をコンパイルします

例外android.os.NetwokOnMainThreadExceptionが発生しています

リンクの下にあるOKHTTPレシピフォームをすでに確認しているため、その問題を解決する方法を取得できません。 https://github.com/square/okhttp/wiki/レシピ

    public class MainActivity extends AppCompatActivity {

    private final OkHttpClient client = new OkHttpClient();
    private final Gson gson = new Gson();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            Request request = new Request.Builder()
                    .url("https://api.github.com/gists/c2a7c39532239ff261be")
                    .build();
            Response response = client.newCall(request).execute();
            if (!response.isSuccessful())
                Toast.makeText(getApplicationContext(),"false",Toast.LENGTH_LONG).show();

            Gist gist = gson.fromJson(response.body().charStream(), Gist.class);
            for (Map.Entry<String, GistFile> entry : gist.files.entrySet()) {
                Toast.makeText(getApplicationContext(),entry.getKey().toString(),Toast.LENGTH_LONG).show();
            }
        }catch (Exception e){
            Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_LONG).show();
        }
    }

    static class Gist {
        Map<String, GistFile> files;
    }

    static class GistFile {
        String content;
    }

}
4

1 に答える 1

3

enqueue()の代わりに使用しexecute()ます。

Execute は、同じスレッド (この場合は UI スレッド) で実行します。

Enqueue はバックグラウンド スレッドで実行します。

UI スレッドではなく、バックグラウンド スレッドでネットワーク操作を呼び出したい。

Callインターフェイスはこちらをご覧ください。

于 2016-03-10T11:03:14.853 に答える