我试图使用GiantBomb api来查询视频游戏,目前当我将URL输入浏览器时,它的工作正常。 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);
答案 0 :(得分:1)
我通过Postman运行了一些请求,似乎api会查看mime类型以及查询字符串。因此,请尝试将“格式”标题设置为“json”。