codeby
@codeby
Злостный буратино

Как передать в кириллице POST запрос в JSON формате?

Всем привет. Пытаюсь передать на сайт POST запрос из приложения на C#. Проблема в том, что кириллические символы искажаются при передаче, хотя из браузера всё отлично.

Вот POST запрос с заголовками из браузера:

POST URL HTTP/1.1
Host: URL
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: application/json, text/plain, */*
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/json;charset=utf-8
Referer: URL
Content-Length: 29
Cookie: session="2f3efce229$2a$10$3SqRUSaaEiFD2ItE/M37VO"; remember=3e2c6bd983$2a$10$KnFomIqWAMls8kVTHMGjl; i18next=ru-RU
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
 
{"message":"Привет :)"}


Вот ответ сервера:

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 04 Jan 2015 11:14:10 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 124
Connection: keep-alive
 
{"id":"54a91fe0e4b0093d4982d09b","message":"Привет :)","inbox":false,"unread":false,"date":"2015-01-04T11:11:28.272Z"}


Делаю то же самое через приложение:

Вот заголовки:

POST URL HTTP/1.1
User-Agent: User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Host: URL
Cookie: session="2f3efce229$2a$10$3SqRUSaaEiFD2ItE/M37VO"; remember=3e2c6bd983$2a$10$KnFomIqWAMls8kVTHMGjl; i18next=ru-RU
Content-Type: application/json;charset=utf-8
Cache-Control: no-cache
Pragma: no-cache
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept: application/json, text/plain, */*
Referer: URL
Content-Length: 23

{"message":"       :)"}


как видите, кодировка уже слетает.

если прописывают в POST запросе кодировку windows-1251 то отображается в запросе нормально, но обратно ответ приходит всё равно кривой.

Куда копать?
  • Вопрос задан
  • 5137 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Ruslan_Brezovskiy
У вас отличается значение Content-Length в двух запросах, должно быть 29, а не 23, так как русские символы занимают по два байта. Если столкнетесь с такой проблемой, используя яндекс.танк, то и сумма байт всего запроса должна быть увеличена
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы