首页 > 解决方案 > 可以在不使用 AsyncTask 的情况下从 URL 获取 Json 吗?

问题描述

我是 android 新手,我正在构建问题的游戏。现在,我想使用 API 将我的问题带入我的游戏,API 返回一个 JSON 字符串,但是当我使用 API Url 访问 Intent 时,我的应用程序崩溃了。

从 OnCreate 我正在调用名为:get_questions_from_api() 的函数该函数需要使用类中的“new_questions”ArrayList 与 API 相同,但它会崩溃。

private void get_questions_from_api() {
    String json_str;
    try {
        json_str = new Scanner(new URL("https://opentdb.com/api.php?amount=10").openStream(), "UTF-8").useDelimiter("\\A").next();
        Gson gson = new Gson();
        TypeToken<ArrayList<OpenTDB>> token = new TypeToken<ArrayList<OpenTDB>>(){};
        new_questions  = gson.fromJson(json_str, token.getType());
    }
    catch (Exception e){
        pop_up("error !");
    }
}

我正在寻找所有 10 个问题都将在我的数组列表中,但是当我开始“onCreate”时,所有应用程序都崩溃了。我认为它应该在“asynctask”中

标签: javaandroidandroid-asynctaskgson

解决方案


推荐阅读