Jaka jest różnica pomiędzy
request.ContentType = "application / json; charset = utf-8";
i
webRequest.ContentType = "aplikacja / x-www-form-urlencoded";
Jaka jest różnica pomiędzy
request.ContentType = "application / json; charset = utf-8";
i
webRequest.ContentType = "aplikacja / x-www-form-urlencoded";
Odpowiedzi:
Pierwszym przypadkiem jest poinformowanie serwera internetowego, że publikujesz dane JSON, jak w:
{ Name : 'John Smith', Age: 23}
Drugą opcją jest poinformowanie serwera internetowego, że będziesz kodować parametry w adresie URL, jak w:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
zmyliłoby serwer (w moim przypadku Elixir używający Poison) i spowodowałoby niewłaściwe parsowanie obiektu (w jakiś sposób przekształciło zagnieżdżoną tablicę obiektów na mapę zamiast listy). application/json
W tym przypadku użycie powinno być właściwym wyborem.
webRequest.ContentType = "aplikacja / x-www-form-urlencoded";
Skąd pochodzi nazwa application / x-www-form-urlencoded ?
Jeśli wysyłasz żądanie HTTP GET , możesz użyć parametrów zapytania w następujący sposób:
http://example.com/path/to/page
? name = fretka & color = purple
Zawartość pól jest kodowana jako ciąg zapytania. The application/x-www-form-
urlencoded
Nazwy pochodzą z poprzedniego parametru zapytania url ale parametry zapytań w przypadku gdy organ wniosku zamiast adresu URL.
Całe dane formularza są wysyłane jako długi ciąg zapytania, który zawiera pary nazwa- wartość oddzielone znakiem &
np. pole1 = wartość1 i pole2 = wartość2
Może to być proste żądanie zwane prostym - nie uruchamiaj kontroli wstępnej
Proste żądanie musi mieć pewne właściwości. Więcej informacji można znaleźć tutaj . Jedną z nich jest to, że w nagłówku Content-Type dla prostych żądań dozwolone są tylko trzy wartości
3. Dla większości płaskich drzew param wypróbowano i przetestowano application / x-www-form-urlencoded.
request.ContentType = "application / json; charset = utf-8";
axios i superagent , dwie z bardziej popularnych bibliotek npm HTTP, domyślnie współpracują z treściami JSON.
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
Teraz, jeśli żądanie nie jest prostym żądaniem , przeglądarka automatycznie wysyła żądanie HTTP przed pierwotnym metodą OPTIONS , aby sprawdzić, czy wysyłanie pierwotnego żądania jest bezpieczne. Jeśli wszystko jest w porządku, wyślij aktualne żądanie. Więcej informacji można znaleźć tutaj .
x-www-form-urlencoded
żądań AJAX, takich jak głosowanie itp. Odesłana odpowiedź toJSON
. Myślę, że lepiej jest mieć symetryczną parę żądanie / odpowiedź, czyli oba JSON.