我正在尝试使用改造对互联网游戏数据库(IGDB)Api进行查询。过去,当我使用其他Api(例如电影数据库(TMDB))时,总是将api键作为查询传递进来,因此界面看起来像这样。
@GET("/3/movie/popular")
Call<MovieResults> getPopularMovie(
@Query("api_key") String apiKey,
@Query("language") String language,
@Query("page") int page
);
但是对于IGDB,我认为他们希望我将api键作为标头传递(我不确定100%,如果我错了,请更正我)。我以前从未通过标头传递api-key,因此,通过一些猜测,以下是我的界面的样子。
@Headers({
"Accept: application/json",
"user-key: b5bd50####################8b2"
})
@GET("/games")
Call<List<Game>> getGame();
问题是,当我拨打电话时,尽管通话以onResponse结尾,但response.body始终为null。
因此,我在调试模式下运行了代码,然后发现了以下消息:
response = Response{protocol=http/1.1, code=401, message=Unauthorized, url=http://v2000.igdb.com/games/}
我不知道这意味着什么,但是我猜它无法识别授权的api-key?
另一个有趣的异常是,我传入的基本网址是:
"https://api-2445582011268.apicast.io/"
我不知道那是怎么回事:
http://v2000.igdb.com/
如果有人对IGDB有任何经验,请给我一些帮助,我们将不胜感激。
答案 0 :(得分:2)
我已将此API与JAVA一起使用,我可以确认您应该在标头中发送API密钥,因此您所做的事情看起来是正确的。
您获得的基本网址也不正确,请尝试使用https://api-endpoint.igdb.com/
,这是推荐的网址。
我还建议您使用Postman试用api,这是测试的绝佳工具。
如果您使用的是Java,则可能要尝试使用其java wrapper