【问题标题】:Loading using Ion Library returning null JsonObject result使用 Ion 库加载返回 null JsonObject 结果
【发布时间】:2020-12-30 10:35:27
【问题描述】:

几个月前我构建了一个 Android 应用程序,其中一个片段用于使用 News API 显示新闻。 最近再次运行应用,出现如下错误。

我在发生错误的地方附上了代码 sn-p。

Ion.with(getActivity()).load("GET",urltemp).asJsonObject().setCallback(new FutureCallback<JsonObject>() {
                @Override
                public void onCompleted(Exception e, JsonObject result) {

                    Log.d(TAG, "enter ");
                    String status = result.get("status").getAsString();
                    if (status.equals("ok")) {

                        JsonArray array = result.get("articles").getAsJsonArray();

                        for (int i = 0; i < array.size(); i++) {
                            JsonObject object = array.get(i).getAsJsonObject();

                            String author = object.get("author").toString();

                            String title = object.get("title").toString();
                            title = title.substring(1, title.length() - 1);

                            String url = object.get("url").toString();
                            url = url.substring(1, url.length() - 1);

                            String urlToImage = object.get("urlToImage").toString();
                            urlToImage = urlToImage.substring(1, urlToImage.length() - 1);

                            String date = object.get("publishedAt").toString();
                            String content = object.get("content").toString();
                            content = content.substring(1, content.length() - 1);

                            items.add(new ModelItems(title, author, date, urlToImage, url));
                        }

                        adapter = new SlideshowViewModel(getActivity(), items);
                        recyclerView.setAdapter(adapter);

                        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
                        recyclerView.setLayoutManager(layoutManager);
                        Log.d(TAG, "success");
                    } else {
                        Log.e(TAG, "error");
                    }
                }
            });

现在,我认为可能有两种可能的错误来源,要么是 URL(urltemp 变量)的问题,要么是 Ion 库的问题。现在,我将 URL 粘贴到浏览器中,它工作正常。所以,我想问题出在离子上。 JsonObject 结果始终为空。尝试了不同的方法,但无法找到任何解决方案。

我从未使用过 Postman。所以,我不知道如何发布 API 响应。我附上了我如何分配 URL。

我尝试过将上述 URL 粘贴到浏览器中。当我将 URL 粘贴到浏览器中时,我得到以下响应:

【问题讨论】:

  • 你能把错误贴出来吗!
  • 点击错误(蓝色)
  • 它显示 null 是因为您的应用程序没有收到 JSON 字符串,检查您连接到服务器的位置,并记录该消息,如果它是 200,那么它正在连接,否则有问题并且您的应用程序没有连接到服务器

标签: java android android-ion


【解决方案1】:

似乎 String status = result.get("status").getAsString(); 正在从您的服务器返回 null。你能发布来自邮递员的 API 响应吗

【讨论】:

  • 在输入标签之前尝试记录json结果如何
  • Log.d("result",result)
  • 我试过 Log.d("results", result.toString()) 因为只写结果显示错误:必需的字符串参数,提供的 JsonObject 参数。但是在写result.toString()时,出现同样的错误(尝试在空对象引用上调用虚拟方法toString()。
  • 我在不需要 api-key 的 load() 方法中尝试了与另一个 API 不同的 URL。效果很好。
  • 所以现在我们知道你的结果是空的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多