powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кирилица в SOAP-запросе
24 сообщений из 24, страница 1 из 1
Кирилица в SOAP-запросе
    #39844420
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день уважаемые знатоки! Второй день бьюсь над темой передачи в SOAP-запросе русских символов. C Веб-службой общаюсь через TIdHTTP. Все настройки выставил правильно. Авторизация проходит успешно. Но когда пытаюсь отправить запрос в теле которого содержится кирилица, снифер показывает что в POST идут ????????.
Отправлял через TStringList
Код: pascal
1.
IdHttp.Post(HTTP_WWW, SL, MS)


Настройки компонента перед отправкой:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
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.
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844455
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А само тело запроса кто кодировать из Unicode в UTF-8 кто будет?
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844500
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747, дык через StringStream пробовал так создать
Код: pascal
1.
2.
SL := TStingStream.Create('', TEncoding.UTF8);
SL := WriteString(SOAP_BODY);



И все равно...
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844508
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IdHttp.Request.ContentEncoding := 'UTF-8' в снифере выдает ошибку распознавания тела запроса
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844514
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И SL.WriteString(UTF8Encode(SOAP_Body)) не работает
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844519
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13И SL.WriteString(UTF8Encode(SOAP_Body)) не работает
ошибка какая?
инди какой версии?
на 9ке я только указывал
http.Request.ContentLanguage := 'utf-8';
больше нигде
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844523
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin, Indy 10.5.7. Ну попробую сейчас указать ContentLanguage
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844525
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13,

тело запроса естественно кодирую Utf8Encode, правда не все, а только саму кириллицу.
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844526
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin, не помогает ContentLanguage. Хотя в запросе показывает русские символы в виде \567\554\342\.... Это ж вроде правильно должно быть... Блин. Странно...
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844527
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13IdHttp.Request.ContentLength = Length(SOAP_BODY);

без этого разве не работает? имхо вообще не инициализировать лишнее.
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844528
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin, ХЗ, в описании службы грит надо в заголовке размер указать
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844530
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13,

мало ли, но может после енкода в утф он другой длины?
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844536
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverin, убрал длину, не помогает...
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844542
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13,

закодируйте отдельно только кирилицу и посмотрите запрос как выглядит
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844545
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13wolverin, ХЗ, в описании службы грит надо в заголовке размер указать
Это компонент САМ всё делает, не мешай ему!


Код: pascal
1.
2.
3.
4.
5.
    if Assigned(ARequest.Source) then begin
      ARequest.ContentLength := ARequest.Source.Size;
    end else begin
      ARequest.ContentLength := -1;
    end;
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844675
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну убрал я размер, а толку. Без кирилицы запрос нормально проходит, это я уже пробовал. Там в таком запросе можно либо по цифрам вытягивать данные либо по ФИО. Вот по цифрам получается, а по ФИО нет
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844696
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Cobalt747, дык через StringStream пробовал так создать
Код: pascal
1.
2.
SL := TStingStream.Create('', TEncoding.UTF8);
SL := WriteString(SOAP_BODY);



И все равно...
код отправки показывай.
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844718
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем thttprio не устраивает?
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844819
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dartveider13Без кирилицы запрос нормально проходит, это я уже пробовал
да не кирилицу убрать предлагаю, а енкодить только ее, а не весь запрос целиком.
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39844952
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverindartveider13Без кирилицы запрос нормально проходит, это я уже пробовал
да не кирилицу убрать предлагаю, а енкодить только ее, а не весь запрос целиком.
/лицоладонь
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39845224
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HTTPRio не устраивает тем, что сама по себе служба написана не мной и она кривовата в плане ответов от нее. WSDL тоже кривой у нее.
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39845226
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
// Процедура отправки запроса
var
 SOAP_Action, SOAP_Body: String;
begin
...
MS := TMemoryStream.Create;
SS := TStringStream.Create('', TEncoding.UTF8);
try
 SS.WriteString(SOAP_Body);
 
 IdHTTP.Request.Connection := 'keep_alive';
 IdHTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
 IdHTTP.Request.UserAgent := 'Mozilla/3.0 (compatible;Indy Library)';
 IdHTTP.ProtocolVersion := pv1_1;
 IdHTTP.Request.ContentType := 'text/xml; charset=UTF-8';
 IdHTTP.Request.ContentLanguage := 'UTF-8';
 IdHTTP.Request.CustomHeaders.Clear;
 IdHTTP.Request.CustomHeaders.Add(SOAP_Action);
 IdHTTP.Post(HTTP_WWW, SS, MS);
 // как то так
finally
 FreeAndNil(SS);
 FreeAbdBil(MS);
end;
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39845232
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел онлайн конвертером hex-кодов в символы utf-8. Ну не те коды получаются. У меня начинается с кодов xce xe2, а должно быть xd0 xbe
...
Рейтинг: 0 / 0
Кирилица в SOAP-запросе
    #39845247
dartveider13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Емае)))) Вобщем сам дурак называется! Все хорошо. Код рабочий. Оказалось я неправильно другой параметр выставлял))) Там в запросе был тег TZ (типа тип запроса) и он у меня по копипасте был ZPT. Это для цифрового запроса, а надо было написать ZPL. Вобщем невнимательность и копипаста))) Всем спасибо за участие.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Кирилица в SOAP-запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]