อะไรคือความแตกต่างระหว่าง
request.ContentType = "application / json; charset = utf-8";
และ
webRequest.ContentType = "แอปพลิเคชัน / x-www-form-urlencoded";
อะไรคือความแตกต่างระหว่าง
request.ContentType = "application / json; charset = utf-8";
และ
webRequest.ContentType = "แอปพลิเคชัน / x-www-form-urlencoded";
คำตอบ:
กรณีแรกคือบอกเว็บเซิร์ฟเวอร์ว่าคุณกำลังโพสต์ข้อมูล JSON ดังต่อไปนี้:
{ Name : 'John Smith', Age: 23}
ตัวเลือกที่สองกำลังบอกเว็บเซิร์ฟเวอร์ว่าคุณจะเข้ารหัสพารามิเตอร์ใน URL เช่นเดียวกับใน:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
จะสร้างความสับสนให้เซิร์ฟเวอร์ (Elixir ใช้ Poison ในกรณีของฉัน) และทำให้การแยกวิเคราะห์วัตถุที่ไม่เหมาะสม ของวัตถุไปยังแผนที่แทนที่จะเป็นรายการ) การใช้application/json
ควรเป็นตัวเลือกที่ถูกต้องในกรณีนี้
webRequest.ContentType = "แอปพลิเคชัน / x-www-form-urlencoded";
สถานที่ที่ไม่application / x-www ฟอร์ม urlencodedชื่อมาจากไหน?
หากคุณส่งคำขอHTTP GETคุณสามารถใช้พารามิเตอร์การสืบค้นดังนี้
http://example.com/path/to/page
? name = คุ้ยเขี่ยและสี = สีม่วง
เนื้อหาของฟิลด์ถูกเข้ารหัสเป็นสตริงเคียวรี application/x-www-form-
urlencoded
ชื่อ 's มาจากพารามิเตอร์การค้นหา URL ก่อนหน้านี้ แต่พารามิเตอร์การค้นหาที่อยู่ในที่ร่างกายของคำขอแทนของ URL
ข้อมูลในแบบฟอร์มทั้งหมดจะถูกส่งเป็นสตริงแบบสอบถามแบบยาวสตริงแบบสอบถามมีคู่ค่าชื่อที่คั่นด้วย&อักขระ
เช่น field1 = value1 & field2 = value2
อาจเป็นคำของ่ายที่เรียกว่าง่าย - อย่าเปิดการตรวจสอบล่วงหน้า
คำร้องขอแบบง่ายจะต้องมีคุณสมบัติบางอย่าง คุณสามารถดูที่นี่สำหรับข้อมูลเพิ่มเติม หนึ่งในนั้นคือมีเพียงสามค่าที่อนุญาตสำหรับส่วนหัว Content-Type สำหรับการร้องขออย่างง่าย
3. สำหรับต้น param ที่แบนส่วนใหญ่จะใช้และทดสอบ x-www-form-urlencoded
request.ContentType = "application / json; charset = utf-8";
axiosและsuperagentซึ่งเป็นหนึ่งในสองไลบรารี HTTP ที่ได้รับความนิยมมากขึ้นทำงานร่วมกับเนื้อความ JSON โดยค่าเริ่มต้น
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
ตอนนี้ถ้าคำขอไม่ใช่คำของ่าย ๆเบราว์เซอร์จะส่งคำขอ HTTP โดยอัตโนมัติก่อนที่จะส่งคำขอดั้งเดิมโดยวิธีOPTIONSเพื่อตรวจสอบว่าปลอดภัยหรือไม่ที่จะส่งคำขอดั้งเดิม ถ้ามันตกลงแล้วส่งคำขอจริง คุณสามารถดูที่นี่สำหรับข้อมูลเพิ่มเติม
x-www-form-urlencoded
สำหรับการร้องขอ AJAX เช่นการลงคะแนนเสียง ฯลฯJSON
กลับมาส่งคำตอบคือ ฉันคิดว่ามันจะดีกว่าถ้ามีคู่ขอ / ตอบสนองแบบสมมาตรเช่น JSON ทั้งคู่