處理從第三方獲取的php資料介面,將其輸出純json格式
阿新 • • 發佈:2019-01-10
昨天找了很多獲取介面資料的網站,今天想要用用這些介面,結果發現不會用,主要是返回的資料格式不會用,好心塞呀
像我這種php小白,搗鼓了很久很久,才把它搞懂,必須記下來希望當您遇到同樣問題的時候可以節約一點時間吧
利用第三方提供的php程式碼,是下面這樣的
<?php $method = "GET"; // 請求示例 url 預設請求引數已經做URL編碼 $url = "http://api01.bitspaceman.com:8000/news/qihoo?apikey={您自己的apikey}&kw=%E7%99%BD&site=qq.com"; $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_ENCODING, "gzip"); var_dump(curl_exec($curl)); ?>
然後把{您自己的apikey}替換成它給你的apikey(切記{}也要去掉哦),然後確實可以輸出json資料,但你會發現除了json資料,頭部還有很多的程式碼,如下示例
string(14276) "HTTP/1.1 200 OK Date: Thu, 14 Jun 2018 12:24:16 GMT Content-Type: application/json; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive X-RateLimit-Limit-day: 86400 X-RateLimit-Remaining-day: 86353 X-RateLimit-Limit-minute: 20 X-RateLimit-Remaining-minute: 19 X-RateLimit-Limit-second: 1 X-RateLimit-Remaining-second: 0 X-RateLimit-Limit-month: 2678400 X-RateLimit-Remaining-month: 2678353 Server: nginx src_api: 120.77.98.119:20010 Status_code: 000000 Content-Encoding: gzip X-Kong-Upstream-Latency: 327 X-Kong-Proxy-Latency: 0 Via: kong/0.10.2
那如果我們想要把這些程式碼給去掉,就要對PHP程式碼進行修改,所以上面的程式碼修改完之後就是:
<?php $method = "GET"; // 請求示例 url 預設請求引數已經做URL編碼 $url = "http://api01.bitspaceman.com:8000/news/qihoo?apikey={您自己的apikey程式碼}&kw=%E7%99%BD&site=qq.com"; $curl = curl_init(); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_ENCODING, "gzip"); $content = curl_exec($curl); $header_size = curl_getinfo($curl,CURLINFO_HEADER_SIZE); $bodys = substr($content,$header_size); echo '<pre>'; echo($bodys); ?>
因為我是PHP小白,所以並不打算對它做什麼講解,那主要修改的程式碼,如下:
$content = curl_exec($curl);
$header_size = curl_getinfo($curl,CURLINFO_HEADER_SIZE);
$bodys = substr($content,$header_size);
echo '<pre>';
echo($bodys);
然後,新增完之後,輸出的結果就是純json資料嘍,嗯,希望如果您的情況和我一樣的話,能夠幫到您哦,如果遇到了其他的問題,也可以留言提問哦(PHP知識除外,現在還沒學,以後打算學)