違いは何ですか
request.ContentType = "application / json; charset = utf-8";
そして
webRequest.ContentType = "application / x-www-form-urlencoded";
違いは何ですか
request.ContentType = "application / json; charset = utf-8";
そして
webRequest.ContentType = "application / x-www-form-urlencoded";
回答:
最初のケースは、次のようにJSONデータをポストしていることをWebサーバーに通知することです。
{ Name : 'John Smith', Age: 23}
2番目のオプションは、次のようにURLのパラメーターをエンコードすることをWebサーバーに通知することです。
Name=John+Smith&Age=23
application/x-www-form-urlencoded
するとサーバーが混乱し(私の場合はPoisonを使用するElixir)、オブジェクトの不適切な解析が発生します(ネストされた配列が何らかの形で変換されます)リストではなくマップへのオブジェクトの)。application/json
この場合、正しい選択を使用する必要があります。
webRequest.ContentType = "application / x-www-form-urlencoded";
どこんアプリケーション/ x-www-form-urlencodedの名前の由来の?
HTTP GETリクエストを送信する場合、次のようにクエリパラメータを使用できます。
http://example.com/path/to/page
?name = ferret&color = purple
フィールドの内容はクエリ文字列としてエンコードされます。application/x-www-form-
urlencoded
名前は、以前のURLクエリパラメータから来るが、クエリパラメータは、どこリクエストのボディの代わりに、URLです。
フォームデータ全体が長いクエリ文字列として送信されます。クエリ文字列には、&文字で区切られた名前と値のペアが含まれます
例:field1 = value1&field2 = value2
シンプルと呼ばれるシンプルなリクエストの場合もあります- プリフライトチェックをトリガーしないでください
単純なリクエストにはいくつかのプロパティが必要です。あなたは見ることができ、ここで詳細は。それらの1つは、単純な要求のContent-Typeヘッダーに許可されている値が3つしかないことです。
3.ほとんどフラットなパラメーターツリーの場合、application / x-www-form-urlencodedが試され、テストされます。
request.ContentType = "application / json; charset = utf-8";
axiosとたSuperAgent、デフォルトでJSON機関とのより人気NPM HTTPライブラリ、仕事の2。
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
これで、リクエストが単純なリクエストではない場合、ブラウザは元のリクエストの前にOPTIONSメソッドによって自動的にHTTPリクエストを送信して、元のリクエストを送信しても安全かどうかを確認します。問題がなければ、実際のリクエストを送信します。あなたは見ることができ、ここで詳細は。
x-www-form-urlencoded
投票などのAJAXリクエストに使用されているのを確認しましたJSON
。返される応答はです。対称的なリクエスト/レスポンスのペア、つまり両方のJSONを使用する方が良いと思います。