2016-05-17 46 views
1

我試圖使用POSTMAN模擬來自移動應用程序的POST調用。我做了以下內容:如何在POST API中模擬發送表單數據通過POSTMAN調用

  1. 動詞:POST
  2. PARAMS:加2個PARAMS(無論是在URL中顯示)
  3. :添加鍵值對 - 內容類型/應用/ JSON
  4. :選擇了「表單數據」單選按鈕並加入2-鍵 - 值對來表示的形式輸入 - 電子郵件/ [email protected] &年齡/ 18

當我提交請求並在我的服務器代碼(PHP)中打印$ request對象時,我只獲取參數(步驟#2)而不是表單字段。

想知道POSTMAN是否沒有通過表單數據,或者我沒有看到正確的地方(即在$ request對象中)。

我也嘗試'原始'而不是'form-data',並通過了JSON,但結果相同。

我嘗試從Web應用程序調用相同的API,我在$ request對象中獲得正確的表單數據值。

任何幫助解決我面臨的問題非常感謝。我花了幾乎整整一天的時間通過POSTMAN文檔搜索谷歌,但沒有多大進展。

+0

內容類型應用程序/ json和發佈表單是獨佔的,如果你想發佈表單數據的內容類型應該是應用程序/ x-www-form-urlencoded – Tensibai

回答

3

動詞:POST

正確

PARAMS:加2個PARAMS(無論是在URL中顯示)

你可能不應該這樣做

如果您正在發出POST請求,請將它們放在body標籤上的「表單數據」中。 (POST請求可能包含查詢字符串數據,但這很不尋常)。

部首:加入鍵值對 - 內容 - 類型/應用/ JSON

絕對不這樣做。

您正在發送表單編碼數據,而不是JSON。

郵差會自動設置正確的內容類型,如果你不覆蓋它。

Body:選中'form-data'單選按鈕並添加2個鍵值對以表示表單輸入 - email/someone @ gmail。com & age/18

大概是正確的。表單的默認編碼是x-www-form-urlencoded,但PHP可以處理兩者。

我只得到PARAMS(步驟#2)而不是表單域。

PHP本身不支持使用JSON編碼的郵件正文解析HTTP請求,所以它會看到您聲稱您正在發送JSON並且什麼都不做。

如果它確實支持JSON,那麼它會嘗試將表單編碼數據解析爲JSON並失敗。

我也嘗試'原始'而不是'form-data',並通過了一個JSON,但結果相同。

你必須manually decode JSON encoded request bodies

+0

嗨昆汀,感謝您的快速響應。我按照您的建議刪除了標題和參數並提交了請求。現在當我執行'$ request-> all()'時,我得到一個空白數組。早些時候同樣會返回2個參數。 – Ashish

+0

嘗試下面的代碼在服務器端,同時傳遞數據爲原始和x-www-form-urlencode '$ inputJSON = file_get_contents('php:// input'); $ input = json_decode($ inputJSON,TRUE); dd(json_encode($ input));' 輸出是「」 不知道我在做什麼錯? – Ashish