有人知道如何从版本3开始使用Internet游戏数据库API正确搜索游戏吗?我正在尝试使用IGDB进行简单的游戏搜索。对于每个与搜索字词匹配的游戏,我想检索该游戏的名称,类型,开发商和发行商,初始发行日期以及封面的URL。通过一些谷歌搜索,我已经通过旧的URL参数使它工作了,但是它们的末端似乎有所改变,而那些不再起作用。版本3的文档说使用Apicalypse将想要的字段发送回Web请求的正文中,但是我一辈子都无法弄清楚该如何做。我正在使用AJAX将搜索字词发送到控制器,然后通过JSON对象将结果发送回去。无论我使用的字段语法如何,每次都会收到400 Bad Request错误。该文档说,使用URL参数仍然可以使用,但不能使用。这是我的控制器代码。
[HttpPost]
[WebMethod]
public JsonResult LookUpGames(string search)
{
string url = "https://api-v3.igdb.com/games/?search=" + search
+ "&fields=name,genres,involved_companies,first_release_date,cover";
HttpWebRequest gameRequest = (HttpWebRequest)WebRequest.Create(url);
gameRequest.Accept = "application/json";
gameRequest.Headers.Add("user-key", "[MYUSERKEY]");
WebResponse gameResponse = (HttpWebResponse)gameRequest.GetResponse();
string responseString = new StreamReader(gameResponse.GetResponseStream()).ReadToEnd();
return Json(new { result = responseString });
}
更新:谢谢你的指导,杰克。我现在用以下代码访问服务器。
HttpResponse<JsonResult> jsonResponse = Unirest.post("https://api-v3.igdb.com/games")
.header("user-key", "[MYUSERKEY]")
.header("Accept", "application/json")
.body("fields name,genres,platforms,involved_companies,cover").asJson<JsonResult>();
JsonResult jsonResult = Json(new { result = jsonResponse });
return jsonResult;
显然C#中没有JsonNode,所以我尝试了JsonResult,而.asJson()似乎是.asJson()。我只是摆弄它直到它起作用。但是我仍然没有得到清单。我收到400错误的请求错误。因此,即使采用这种新格式,它仍然不喜欢我提供的字段。根据文档中的结构,我提供的字段实际上在Game端点中。所以我不知道有什么问题。还有其他想法吗?
答案 0 :(得分:0)
我决定再次尝试查询方法,现在它以某种方式起作用。这是我的控制器方法。不知道哪些调整使它再次起作用,但是确实可以。
[HttpPost]
[WebMethod]
public JsonResult LookUpGames(string search)
{
string url = "https://api-v3.igdb.com/games?search=" + search +
"&fields=name,genres.name,platforms.name,involved_companies.*, involved_companies.company.*,first_release_date,cover.url";
HttpWebRequest gameRequest = (HttpWebRequest)WebRequest.Create(url);
gameRequest.Accept = "application/json";
gameRequest.Headers.Add("user-key", "[MYUSERKEY]");
WebResponse gameResponse = gameRequest.GetResponse();
StreamReader sr = new StreamReader(gameResponse.GetResponseStream());
string responseString = sr.ReadToEnd();
sr.Close();
JsonResult jsonResult = Json(new { result = responseString });
return jsonResult;
}