2016-05-17 13 views
1

POSTMANを使用してモバイルアプリケーションからPOSTコールをシミュレートしようとしています。私がやった次POST APIでフォームデータを送信するシミュレーション方法

  1. 動詞:POST
  2. のparams:追加のキーと値のペア - のContent-Type:2つのparams(両方がURLに表示)
  3. ヘッダーを追加しました/ application/json
  4. 本文:選択された 'form-data'ラジオボタンと2つのキーと値のペアを追加してフォームの入力を表現します - email/[email protected] &年齢/ 18

リクエストを送信し、サーバーコード(PHP)で$ requestオブジェクトを出力すると、フォームフィールドではなくパラメータ(#2)だけが取得されます。

POSTMANがフォームデータを渡していないのか、私は正しい場所(つまり、$ requestオブジェクト)を見ていないのだろうか。

私はまた、 'form-data'の代わりに 'raw'を使用してJSONを渡しましたが、同じ結果になりました。

Webアプリケーションから同じAPIを呼び出してみましたが、$ requestオブジェクトに適切なフォームデータ値があります。

私が直面している問題を解決するためのお手伝いは大変ありがたいです。私はほぼ一日をPOSTMANの文書とgoogleで検索していますが、あまり進んでいませんでした。

+0

コンテンツタイプapplication/jsonとフォームの投稿は排他的です。フォームデータを投稿する場合は、content-typeはapplication/x-www-form-urlencodedにする必要があります。 – Tensibai

答えて

3

動詞:POST

正しい

のparams:2つのparams(両方がURLに表示)

あなたはおそらくそれを行うべきではありませんを追加しました

POSTリクエストをしている場合、それらをbodyタブの 'form data'に入れてください。 (POST要求でクエリ文字列データを含めることは可能ですが、それは珍しいことです)。

ヘッダー:追加のキーと値のペア - のContent-Type /アプリケーション/ JSON

確かにそれをしないでください。

JSONではなくフォームエンコードされたデータを送信しています。

無効にしないと、Postmanは自動的に正しいコンテンツタイプを設定します。

本文:form-dataラジオボタンを選択し、フォーム入力を表す2つのキーと値のペアを追加しました - email/someone @ gmail。com &年齢/ 18

おそらく正しいでしょう。フォームのデフォルトのエンコーディングはx-www-form-urlencodedですが、PHPは両方を扱うことができます。

私はフォームフィールドではなくパラメータ(ステップ#2)のみを取得します。それはあなたがJSONを送信し、何もしませんしているあなたの主張を見ているよう

PHPは、JSONエンコードされたメッセージのボディでHTTPリクエストを解析するためのネイティブサポートしていません。それはそのためのサポートJSONをした場合

、それはJSONとしてフォームエンコードされたデータを解析し、失敗しようとするだろう。

「form-data」ではなく「raw」を使用してJSONを渡しましたが、同じ結果です。

manually decode JSON encoded request bodiesが必要です。

+0

こんにちはQuentin、あなたが提案し提出したときにヘッダーとパラメータを削除しました。 '$ request-> all()'を実行すると空白の配列が得られます。これと同じ方法で2つのパラメータが返されます。両方の生&X-WWW-フォームでurlencode '$ inputJSON =のfile_get_contents( 'PHP://入力')のようなデータを流しながら – Ashish

+0

は、サーバ側でのコードの下にしようとしました。 $ input = json_decode($ inputJSON、TRUE); dd(json_encode($ input)); ' 出力は「」 私は何をしているのかよく分かりませんか? – Ashish

関連する問題