为什么不从GiantBomb API返回JSON

时间:2013-04-05 22:41:20

标签: php json api wrapper decode

我试图使用GiantBomb api来查询视频游戏,目前当我将URL输入浏览器时,它的工作正常。 Json数据出现了。

以下是一个示例网址.. http://www.giantbomb.com/api/search/?api_key=83611ac10d0dfghfgh157177ecb92b0a5a2350c59a5de4&query=Mortal+Kombat&format=json

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

你会注意到'request'方法,我已经注释掉json_decode($ url)的返回,因为当我取消注释它时,页面会抛出500错误???所以当我回应它时,我想看看会发生什么。它回应了一个HTML页面。当你只是将这个网址输入浏览器时,肯定它应该只显示所显示的内容,不是吗?

但是......如果我用一个GoogleMap网址替换网址,它就可以很好地回应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);

1 个答案:

答案 0 :(得分:1)

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