我尝试从此来源获取数据,这是有关我所在国家的学校详细信息。但是当我收到响应时,我无法解码我的响应,并说Null
。 Idk为什么,但是当我尝试将响应结果复制并粘贴到硬编码时,就可以对其进行解码。为什么?
我已经尝试了所有可能的方法来解决此问题,但没有任何效果。
这是我的代码:
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', 'http://jendela.data.kemdikbud.go.id/api/index.php/Csekolah/detailSekolahGET?mst_kode_wilayah=026700');
$response = $res->getBody()->getContents();
$result = json_decode($response); // this return NULL
//But when i going to return the $response, it show the response.
return $response;
我希望访问数据,或者只是解码我的代码,这对我有很大帮助。
仅供参考,我正在使用Guzzle 6和Laravel 5.7进行此工作。
我希望有人也可以尝试访问它并为我提供帮助。
或者也许如果您要测试它,可以使用Curl Ways:
$param = 'index.php/Csekolah/detailSekolahGET?mst_kode_wilayah=026700';
$url='http://jendela.data.kemdikbud.go.id/api/'.$param;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec ($ch);
return $response;
答案 0 :(得分:2)
json_decode文档说:
如果无法解码json或编码的数据,则返回NULL 比递归限制还深。
您可以使用json_last_error或json_last_error_msg函数来确定问题。
我无法获得完整的响应,它已超时并终止了。
答案 1 :(得分:0)
根据文档:
如果无法解码json或编码数据的深度大于递归限制,则返回NULL
来源:json_decode
一些调试提示:
utf8
内json_last_error
,请参见:json_last_error 如果调试提示 1 恰好是造成此问题的原因,请查看是否可以将返回值限制为不包含有问题的字符。
答案 2 :(得分:0)
删除行return $response;
并尝试以下代码:
$enc = mb_detect_encoding($response);
if($enc == 'UTF-8') {
$response = preg_replace('/[^(\x20-\x7F)]*/','', $response);
}
echo "<pre>";
print_r(json_decode($response,true));