程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 使用PHP獲取無字段的json數據

使用PHP獲取無字段的json數據

編輯:PHP綜合

使用PHP獲取無字段的json數據

1、如何用PHP獲取json數據?

解決這個問題,通常的解決方式是這樣的:
$jsonData = $_POST[‘jsonstr’];
此方式需要客戶端提交一個jsonstr的參數過來,裡面含的數據是json字符串,然後在服務端解析。

2、客戶端直接傳json數據過來

如果客戶端直接傳json數據過來,而沒有上述jsonstr的參數。使用$_GET,$_POST 和 $_REQUEST是獲取不到數據的。
解決的辦法就是使用使用$GLOBALS這個全局變量,$GLOBALS[‘HTTP_RAW_POST_DATA’]就能獲取客戶端傳來的json數據了。

下面給出Thinkphp中控制器的使用curl提交數據代碼:

class CcAction extends Action {
 public function getjson(){
 echo json_encode($GLOBALS['HTTP_RAW_POST_DATA']);//這裡就能獲取到testcurl傳來的$json_string
 }
 public function testcurl(){
 $header = array('Accept:application/json', 'Content-Type:application/json');
 $patoken = array(
 'name' => 'phpjyz',
 'age' => '23',
 );
 $json_string = json_encode($patoken);
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_USERAGENT, 'SSTS Browser/1.0');
 curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
 
 curl_setopt($ch, CURLOPT_URL, 'http:///api.php/aa/getjson'); //根據自己的路徑修改
 curl_setopt($ch, CURLOPT_POSTFIELDS, $json_string);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 $ret = curl_exec($ch);
 print_r(json_decode($ret, true));
 }
}

返回的數據和$json_string是一模一樣的。

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved