Яка різниця між
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-form-urlencoded ?
Якщо ви надсилаєте HTTP GET- запит, ви можете використовувати параметри запиту наступним чином:
http://example.com/path/to/page
? name = тхор & color = purple
Вміст полів кодується як рядок запиту. У application/x-www-form-
urlencoded
назві «S приходить з попереднього параметра запиту URL , але параметри запиту в де тілі запиту замість URL.
Дані всієї форми надсилаються як довга рядок запиту. Рядок запиту містить пари іменних значень, розділених символом &
наприклад field1 = value1 & field2 = value2
Це може бути простий запит, який називається простим - не запускайте перевірку перед польотом
Простий запит повинен мати деякі властивості. Ви можете подивитися тут для отримання додаткової інформації. Один з них полягає в тому, що для заголовка типу вмісту для простих запитів дозволено лише три значення
3.Здебільшого плоских парам-дерев випробовується тестування application / x-www-form-urlencoded.
request.ContentType = "application / json; charset = utf-8";
Вардар і 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.