0

我尝试使用 GiantBomb api 来查询视频游戏,目前当我在浏览器中输入 URL 时,它工作得很好。Json 数据出现。

这是一个示例网址.. h​​ttp ://www.giantbomb.com/api/search/? api_key=83611ac10d0dfghfgh157177ecb92b0a5a2350c59a5de4&query=Mortal+Kombat&format=json

但是当我尝试使用我刚刚开始构建的 php 包装器时,它返回 html?? 这是我的包装代码的开始......(现在非常业余)

你会注意到在“请求”方法中,我已经注释掉了 json_decode($url) 的返回值,因为当我取消注释时,页面会抛出 500 错误???所以我想看看当我回应它时会发生什么。它呼应了一个 html 页面。当然,当您在浏览器中输入该 url 时,它应该只是回显显示的内容,不是吗?

但是......如果我用 GoogleMap url 替换 url,它会很好地回显 Json 数据,而不使用 json_decode。关于这里发生的事情有什么想法吗????

class GiantBombApi {

public $api_key;
public $base_url;
public $format;

 function __construct() {
$this->format="&format=json";
$this->api_key = "83611ac10d0d157177ecb92b0a5a2350c59a5de4";
$this->search_url = "http://www.giantbomb.com/api/search/?api_key=".$this- >api_key."&query=";

}

public function search($query){
$query = urlencode($query);
$url = $this->search_url.$query.$this->format;
return $this->request($url);
}

public function request($url) {
$response = file_get_contents($url);
echo $response;
//return json_decode($response, true);

      }
   }


   //TESTING SECTION
   $games = new GiantBombApi;
   $query = $_GET['search'];
   echo $games->search($query);
4

1 回答 1

2

我通过 Postman 运行了一些请求,似乎 api 查看了 mime 类型以及查询字符串。所以尝试将“格式”的标题设置为“json”。

于 2013-04-05T22:47:38.083 回答