ホームページ  >  記事  >  バックエンド開発  >  PHPを使用してフィールドのないJSONデータを取得する方法

PHPを使用してフィールドのないJSONデータを取得する方法

WBOY
WBOYオリジナル
2016-06-20 13:02:261154ブラウズ

PHP を使用してフィールドのない JSON データを取得する方法

1. PHP を使用して JSON データを取得するには?

この問題を解決するための通常の解決策は次のとおりです:
$jsonData = $_POST[‘jsonstr’];
このメソッドでは、クライアントが jsonstr パラメーターを送信する必要があります。それに含まれるデータは json 文字列であり、サーバー上で解析されます。

2. クライアントは json データを直接転送します

クライアントが上記の jsonstr パラメーターを使用せずに json データを直接送信する場合。 $_GET、$_POST、$_REQUEST を使用してデータを取得することはできません。
解決策は、グローバル変数 $GLOBALS[‘HTTP_RAW_POST_DATA’] を使用して、クライアントから送信された JSON データを取得することです。

以下は、curl を使用して Thinkphp のコントローラーにデータを送信するコードです:

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://www.scutephp.com/api.php/cc/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 とまったく同じです。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。