Apa perbedaan antara
request.ContentType = "application / json; charset = utf-8";
dan
webRequest.ContentType = "application / x-www-form-urlencoded";
Apa perbedaan antara
request.ContentType = "application / json; charset = utf-8";
dan
webRequest.ContentType = "application / x-www-form-urlencoded";
Jawaban:
Kasus pertama memberi tahu server web bahwa Anda memposting data JSON seperti pada:
{ Name : 'John Smith', Age: 23}
Opsi kedua memberi tahu server web bahwa Anda akan menyandikan parameter dalam URL seperti pada:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
akan membingungkan server (Elixir menggunakan Poison dalam kasus saya) dan menghasilkan beberapa penguraian objek yang tidak tepat (entah bagaimana mengubah array bersarang objek ke peta, bukan daftar). Penggunaan application/json
harus menjadi pilihan yang benar dalam kasus ini.
webRequest.ContentType = "application / x-www-form-urlencoded";
Dari mana nama aplikasi / x-www-form-urlencoded berasal?
Jika Anda mengirim permintaan GET HTTP , Anda dapat menggunakan parameter kueri sebagai berikut:
http://example.com/path/to/page
? nama = musang & warna = ungu
Konten bidang dikodekan sebagai string kueri. The application/x-www-form-
urlencoded
Nama 's berasal dari sebelumnya parameter url permintaan tetapi parameter query di mana tubuh permintaan bukannya url.
Seluruh data formulir dikirim sebagai string kueri panjang. String kueri berisi pasangan nama-nilai yang dipisahkan oleh & karakter
misal field1 = value1 & field2 = value2
Ini bisa berupa permintaan sederhana yang disebut sederhana - jangan memicu pemeriksaan prapengaturan
Permintaan sederhana harus memiliki beberapa properti. Anda dapat melihat di sini untuk info lebih lanjut. Salah satunya adalah bahwa hanya ada tiga nilai yang diizinkan untuk header Jenis Konten untuk permintaan sederhana
3.Untuk sebagian besar pohon param datar, aplikasi / x-www-form-urlencoded dicoba dan diuji.
request.ContentType = "application / json; charset = utf-8";
aksioma dan superagen , dua pustaka HTTP npm yang lebih populer, bekerja dengan badan JSON secara default.
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
Sekarang, jika permintaan itu bukan permintaan sederhana , browser secara otomatis mengirim permintaan HTTP sebelum yang asli dengan metode OPTIONS untuk memeriksa apakah aman untuk mengirim permintaan asli. Jika tidak apa-apa, maka kirimkan permintaan aktual. Anda dapat melihat di sini untuk info lebih lanjut.
x-www-form-urlencoded
untuk permintaan AJAX seperti suara dll. Respons yang dikirim kembali adalahJSON
. Saya akan berpikir bahwa lebih baik untuk memiliki pasangan permintaan / respons simetris yaitu keduanya JSON.