簡體   English   中英

使用 Postman 通過原始 JSON 發送 POST 數據

[英]Send POST data via raw JSONwith Postman

我有 Postman(那個不能在 Chrome 中打開的),我正在嘗試使用原始 JSON 執行 POST 請求。

在正文選項卡中,我選擇了“原始”和帶有此正文的“JSON(應用程序/json)”:

{
    "foo": "bar"
}

對於標題,我有 1, Content-Type: application/json

在 PHP 方面,我只是在做print_r($_POST); 現在,我得到一個空數組。


如果我使用 jQuery 並執行以下操作:

$.ajax({
    "type": "POST",
    "url": "/rest/index.php",
    "data": {
        "foo": "bar"
    }
}).done(function (d) {
    console.log(d);
});

我得到了預期的結果:

Array
(
    [foo] => bar
)

那么為什么它不與 Postman 一起工作呢?


郵遞員截圖:

在此處輸入圖片說明

和標題:

在此處輸入圖片說明

只需從二進制旁邊的下拉列表中檢查 JSON 選項; 當您單擊原始。 這應該做

技能 Synon 將 json 傳遞給郵遞員

jQuery不同,為了讀取原始JSON您需要在 PHP 中對其進行解碼。

print_r(json_decode(file_get_contents("php://input"), true));

php://input是一個只讀流,允許您從請求正文中讀取原始數據。

$_POST是表單變量,您需要在postman切換到form單選按鈕然后使用:

foo=bar&foo2=bar2

要使用jquery發布原始json

$.ajax({
    "url": "/rest/index.php",
    'data': JSON.stringify({foo:'bar'}),
    'type': 'POST',
    'contentType': 'application/json'
});

meda 的回答完全合法,但是當我復制代碼時出現錯誤!

"php://input"某處有一個無效字符(可能是引號之一?)。

當我手動"php://input"代碼時,它起作用了。 我花了一段時間才弄清楚!

我遇到了同樣的問題,以下代碼對我有用:

$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);

安裝 Postman 原生應用,Chrome 擴展已被棄用。 (我的在自己的窗口中打開,但仍作為 Chrome 應用程序運行)

解決方案1 您可以使用表單數據發送

解決方案2 您可以使用原始 json 數據發送

兩種解決方案都運行良好。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM