1. php用curl的post方法傳遞json包的時候,接受方是怎麼獲取的呢
假設POST的數據為:{"data":"abc"}
POST參數為:data
同樣以PHP為例,接受並處理請求的相關代碼如下:
<?php
extract($_POST);//將數組中的key攤成變數,並導入key對應的值
if(!empty($data))
{
$data=json_decode($data);//json字孫虧漏符串解碼成json數據
var_mp($data);//列印json數據
//輸出結果
object(stdClass)[1]
public'則爛data'空頌=>string'abc'(length=3)
}
2. 關於PHP中POST傳遞參數問題
將數據轉換成 json 格式的字元串, 並通過 CURL 的 POST 的形式傳遞參數給服務端, 但是在服務端無法用 $_POST 獲取到數據。後台用 $_POST 獲取到的信息為空, 但是可以通過 $post = file_get_contents("php://input") 獲取到請求的相關信息。
Coentent-Type 的值為 application/x-www-data-urlencode 和 multipart/form-data 時, php才會將http請求數據包中的數據填進 $_POST 。
如果 POST 的原始數據是一維數組或&拼接的標准格式的鍵值對字元串,那麼可以用 $_POST 來獲取。
如果要通過 file_get_contents 獲取,這種情況下可以發送 json 字元串,用 json_encode 編碼轉換一下,或者使用 http_build_query 。
1、 區別 PHP 的 $_POST、$HTTP_RAW_POST_DATA 和 php://input
2、 accept 和 content-Type區別
3、 Http Header里的Content-Type
3. 在PHP中怎麼接收post過來的JSON數據
$jsonData=$_POST['jsonData'];//接收數據
$arrayData=json_decode($jsonData,true);//轉碼為數組
var_mp($arrayData);//列印結果
4. php怎麼接收json數據格式
PHP接收JSON格式的數據
在API服務中,目前流行採用json形式來交互。
給前端調用的介面輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微復雜一點,原因是:PHP默認識別的數據類型是application/x-www.form-urlencoded標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失敗!
此時可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 來獲取提交的數據
查看手冊,可以發現$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變數組成的數組,是自動全局變數。
$GLOBALS['HTTP_RAW_POST_DATA'] :總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 數據。此變數僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單數據不可用。也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等。
5. 在PHP中怎麼接收來自app的JSON數據
根據你的代碼,你是用的是POST方法。
要在PHP中整體接收POST數據,有兩種方法。
注意,要使用以下兩種方法,Content-Type不能為multipart/form-data。
方法一:
使用:
file_get_contents('php://input')
其中,php://input是一個流,可以讀取沒有處理過的POST數據(即原始數據)。相較於$HTTP_RAW_POST_DATA而言,它給內存帶來的壓力較小,並且不需要特殊的php.ini設置。
方法二:
使用此方法,需要設置php.ini中的always_populate_raw_post_data值為On。
使用$HTTP_RAW_POST_DATA,包含了POST的原始數據。但這不是一個超全局變數,要在函數中使用它,必須聲明為global,或使用$GLOBALS['HTTP_RAW_POST_DATA']代替。
6. PHP使用POST傳遞json數據的接收與處理問題
前端傳給伺服器的只是json 格式的字元串,使用json_decode,
mixed json_decode ( string $json [, bool $assoc ] )
var_mp(json_decode($json));
var_mp(json_decode($json, true));
如果不帶參數,則返回為對象
帶上true時,返回數組
foreach($ARR as $k=>$v){
echo 'key='.$k.';value='.$v;
}
單獨處理每個key 和對應的value就好
7. php通過post傳輸的json數據能採集嗎
不能。所謂的json數據格式是http請求中的body是一個json格式的乎含字磨隱符串,這個用$_POST就獲取不到了。PHP是一種易於學習和使用的伺服器端腳本語言。只需要很少的編程知識你就能使用PHP建立一個真正交互的WEB站點瞎頃廳。