Кирилица в SOAP-запросе

dartveider13
Дата: 02.08.2019 09:25:01
Добрый день уважаемые знатоки! Второй день бьюсь над темой передачи в SOAP-запросе русских символов. C Веб-службой общаюсь через TIdHTTP. Все настройки выставил правильно. Авторизация проходит успешно. Но когда пытаюсь отправить запрос в теле которого содержится кирилица, снифер показывает что в POST идут ????????.
Отправлял через TStringList
IdHttp.Post(HTTP_WWW, SL, MS)

Настройки компонента перед отправкой:
IdHttp.Request.Connection = 'keep-alive';
IdHttp.Request.Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
IdHttp.Request.ProtocolVersion = pv1_1;
IdHttp.Request.ContentType = 'text/xml;charset=UTF-8';
IdHttp.Request.Charset = 'UTF-8';
IdHttp.Request.ContentLength = Length(SOAP_BODY);
IdHttp.Request.CustomHeaders.Clear;
IdHttp.Request.CustomHeaders.Add(SOAP_ACTION);

Перелазив разные вопросы по данной теме, попробовал поменять StringList на StringStream. Теперь сниффер показывает что вместо русских символов и ???? приходят в тело запроса циферки /316/342 и т.д. Вроде как мне кажется так кодируется UTF-8, но тем не менее сама веб-служба отвечает мне что не хочу я таких символов, давай мне нормальный русский язык. Всю голову сломал. Подскажите как можно это победить? Delphi XE.
Cobalt747
Дата: 02.08.2019 10:04:42
А само тело запроса кто кодировать из Unicode в UTF-8 кто будет?
dartveider13
Дата: 02.08.2019 11:11:17
Cobalt747, дык через StringStream пробовал так создать
SL := TStingStream.Create('', TEncoding.UTF8);
SL := WriteString(SOAP_BODY);


И все равно...
dartveider13
Дата: 02.08.2019 11:17:29
IdHttp.Request.ContentEncoding := 'UTF-8' в снифере выдает ошибку распознавания тела запроса
dartveider13
Дата: 02.08.2019 11:26:53
И SL.WriteString(UTF8Encode(SOAP_Body)) не работает
wolverin
Дата: 02.08.2019 11:33:21
dartveider13
И SL.WriteString(UTF8Encode(SOAP_Body)) не работает

ошибка какая?
инди какой версии?
на 9ке я только указывал
http.Request.ContentLanguage := 'utf-8';
больше нигде
dartveider13
Дата: 02.08.2019 11:38:25
wolverin, Indy 10.5.7. Ну попробую сейчас указать ContentLanguage
wolverin
Дата: 02.08.2019 11:42:36
dartveider13,

тело запроса естественно кодирую Utf8Encode, правда не все, а только саму кириллицу.
dartveider13
Дата: 02.08.2019 11:42:47
wolverin, не помогает ContentLanguage. Хотя в запросе показывает русские символы в виде \567\554\342\.... Это ж вроде правильно должно быть... Блин. Странно...
wolverin
Дата: 02.08.2019 11:44:15
dartveider13
IdHttp.Request.ContentLength = Length(SOAP_BODY);

без этого разве не работает? имхо вообще не инициализировать лишнее.