Мне нужно отправить некоторые значения JSON на сервер, используя POST-запросы; отправка их без каких-либо экранирующих работ прекрасна, но это не правильное решение, так как эти значения могут содержать специальные символы? и &.
Я пробовал ответы на другие вопросы (Uri.EscapeDataString, Uri.EscapeUriString, System.Net.WebUtility.UrlEncode, System.Web.HttpUtility.UrlEncode), но все они заставляют сервер возвращать ошибку «Плохой запрос».
Как я могу избежать значений POST ?Как правильно удалить тело POST?
ответ
После нашей небольшой беседы в комментариях, я думаю, я достаточно знаю о том, что вы просите, чтобы собрать ответ. Так вот.
Я вижу три незначительно заданных вопроса.
- Как можно избежать запроса HTTP
POST
?
Я процитирую свой комментарий по этому вопросу, так как он довольно полный.
Тело запроса HTTP (POST или иное) - это просто байты, длина которых определяется заголовком Content-Length (или что-то в этом роде, если используется кодированное кодирование). Вам не нужно беспокоиться о том, чтобы что-то ускользнуло, чтобы работать, побег только начинает играть на следующем уровне вверх, тип контента.
По существу, нет никаких требований к любому виду экранирования для ванильного POST для прохождения.
- Как делать
application/json
иapplication/x-www-formurl-encoded
играть вместе?
В большинстве случаев их просто нет. Они могут, и я думаю, что видел это раньше, но я не могу думать о том, зачем вам это нужно.
Только для фона, и чтобы убедиться, что мы на одной странице, вот тот же объект, сериализованный в JSON и данные формы соответственно.
Обычный объект (для сравнения):
PropertyName: The value is "1 & 2"
OtherProperty: 2
JSON:
{
"PropertyName" : "The value is \"1 & 2\"",
"OtherProperty" : 2
}
Форма данных:
PropertyName=The%20value%20is%20%221%20%26%202%22&OtherProperty=2
Это значение получил довольно грязно, как вы можете видеть. Но вы понимаете.
Итак, да, вы могли бы вполне разумно вложить одно в другое, но не так много случаев использования, где это имеет смысл.
- Как избежать JSON?
Если вы используете библиотеку, эта библиотека должна (если она того стоит) сделает это за вас. Например, JSON.net.Я считаю, что единственное, что вам нужно было бы беспокоиться об экранировании, - это двойные кавычки в JSON, но я не эксперт, и мне было бы не удивляться, если бы узнали, что есть крайние случаи.
Повторюсь из моего комментария, так как он вам помог.
В большинстве современных API («большинство» и «современных» для перевода есть), JSON - довольно разумное ожидание, да. Итак, мы вернемся к моему первому комментарию и скажем, что вам действительно нужно будет беспокоиться об экранировании самих элементов JSON, и если вы используете библиотеку, это должно быть обработано для вас. Разумеется, вы явно не хотите двойного кодирования по очевидным причинам.
Быстрое тестирование всей вашей установки, конечно же, заключается в том, чтобы попытаться отправить регулярные данные (контроль) и убедиться, что это работает, а затем отправить что-то с помощью двойной кавычки и, если хотите, вопрос отметка.
Если вы запустите этот тест, а второй провалится, есть хороший шанс, что что-то не является собственностью. Это может быть приятное время для использования инструментов отладки или даже для приложения, такого как Fiddler, для проверки полезной нагрузки запроса для чего-то необоснованного, например, если ваш JSON был похож на { "name":"val"ue" }
- 1. Как правильно удалить тело в box2d?
- 2. Как правильно прочитать тело запроса POST в обработчике?
- 3. Как установить тело POST запроса POST jQuery?
- 4. Бурундук: как удалить тело?
- 5. Я правильно представляю это тело POST с помощью модификации?
- 6. .NET core WebAPI странное тело в POST. Не правильно сериализовать?
- 7. AFHTTPSessionManager добавить тело к POST
- 8. Почему node.js конвертирует тело POST?
- 9. Как правильно удалить это?
- 10. Jsoup - прохождение сырец тело POST
- 11. Google App Engine: как отключить тело POST?
- 12. Как читать тело из запроса POST
- 13. Как проверить тело POST в nginx (HttpLuaModule)
- 14. Как расшифровать тело запроса POST в golang
- 15. Как получить тело POST в php?
- 16. Отправка массива в тело POST
- 17. Nodejs не получает POST тело
- 18. синтаксического анализа JSON POST тело
- 19. WCF WebInvoke POST тело сообщения
- 20. Java - Как передать тело запроса XML в методе post post
- 21. Удалить тело Box2D
- 22. Неправильно отправляйте тело PSR-7 POST
- 23. Как правильно сделать запрос POST
- 24. Колба - как правильно проверить POST?
- 25. затылок удалить тело при столкновении
- 26. SQL MailMessage Удалить тело сообщения
- 27. Как правильно удалить файл?
- 28. Как правильно удалить дубликаты?
- 29. Как правильно удалить subviews
- 30. Как правильно удалить Homebrew?
'' '' '' '' '' '' '' '' '' '' '' ' JSON, насколько я могу думать. Но твои заботы действительны, все равно. Как вы сериализуете JSON? Если вы используете библиотеку - довольно хорошо какую-либо библиотеку - она должна справляться с экранированием. Если вы сами строите строку, это немного сложнее, но я считаю, что единственная проблема - это двойные кавычки, которые могут быть экранированы с помощью обратного слэша. Но реалистично, я бы настоятельно советовал использовать библиотеку, если производительность не является критичной, а использование является низким. Это будет просто более здорово. –
@Matthew Haugen, о чем я беспокоюсь, является действительностью моих данных как * Тело запроса POST * – user626528
Тело запроса HTTP (POST или иначе) - это просто байты, длина которых определяется заголовком 'Content-Length' (или что-то в этом роде, если используется кодированное кодирование). Вам не нужно беспокоиться о том, чтобы что-то ускользнуло, чтобы работать, побег только начинает играть на следующем уровне вверх, тип контента. –