【发布时间】:2021-01-15 01:27:18
【问题描述】:
所以,我正在尝试连接到 Scryfall 的 API 并进行自动完成调用。我已经能够正确使用他们的另一个电话,但我认为这是我遇到问题的地方。
来电:https://api.scryfall.com/cards/autocomplete?q=fire q 是查询,它将返回最多 20 个项目的列表,这些项目可以使用单词“fire”自动完成。
{
"object":"catalog",
"total_values":20,
"data": [
"Fire // Ice","Fire Imp","Firefly","Fire Whip","Fire Ants","Firebolt","Fireball","Fire Drake","Fire Snake","Firespout","Firestorm","Fireblast","Fire-Field Ogre","Fire Urchin","Fire Bowman","Fire Dragon","Fire at Will","Fire Ambush","Firemaw Kavu","Fire Juggler"
]
}
我正在为 Android 使用 Retrofit2。
这是我的一些代码。
这是我的端点接口
public interface ScryfallEndPoints {
//https://api.scryfall.com/cards/named?fuzzy=
@GET("cards/named")
Call<Card> getCard(
@Query(value=("fuzzy")) String name);
//https://api.scryfall.com/cards/autocomplete?q=
@GET("cards/autocomplete")
Call<Card> getCardAutoComplete(
@Query(value=("q")) String name);
}
这是我在我的活动中用来执行调用的方法。
private void loadCardList()
{
final ScryfallEndPoints apiService =
APIClient.getClient().create(ScryfallEndPoints.class);
Call<Map<String, String>> call = apiService.getCardAutoComplete(str);
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
call.enqueue(new Callback<Map<String, String>>()
{
@Override
public void onResponse(Call<Map<String, String>> call, Response<Map<String, String>> response)
{
Toast.makeText(SuggestionResults.this, "onResponse()", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<Map<String, String>> call, Throwable t)
{
Toast.makeText(SuggestionResults.this, "onFailure()", Toast.LENGTH_SHORT).show();
}
});
//tv.setText(str);
}
这是我的模型类中的一个方法。
@SerializedName("data")
private Map<String, String> cardList;
public Map<String, String> getCardList() {return cardList;}
所以,我觉得我尝试访问模型类中的数据的方式肯定有问题,也许是我在界面中设置它的方式。当我拨打电话时,它并没有失败,所以我没有要显示的错误日志,我只知道它会调用 onFailure() 方法,我不知道为什么。我主要需要弄清楚这一点,然后我才能着手填充列表。此外,如果有一种方法可以让我看到更多关于我正在拨打的电话的情况,那也很棒。谢谢!
【问题讨论】:
-
您需要做的是了解“如何从 JSON 创建 POJO”以及如何在使用 Retrofit 时从 API 接收 JSON 响应。 “jsonschema2pojo.org”会帮助你
-
@rahat 我有一个 pojo 课程并使用过该网站。我只附加了该类(我的模型类)中的一部分相关代码。我已经粘贴了从该网站获得的内容。
-
但您正在尝试在地图中接收
Callback<Map<String, String>>, -
它失败了,因为键
data的值不是字符串而是一个数组