А помогите с формированием тела HTTP запроса в 1С.
Нам нужно отправлять в банк POST запрос с XML структурой.
В 1С сформировал заголовок и саму структуру.
Но банк рукается на парсинг - в начале тела сообщения есть какие то символы.
Отпарсил в Proxyman - да, таки есть.
В начале BODY в режиме HEX есть 3 символа: EF BB BF
Потом уже идет то, что я вставляю <?xml и т.д..
Ну и банк пишет что за заначки перед "<?xml"
Вот код который я тестирую.
Пробовал по разному отправить POST запрос - все равно в начале что-то есть.
Пробовал на разных платформах. Работаем на 8.3.18.1627.
Может кто-то сталкивался с такой бедой?
Что-то можете подсказать, что делать в этой ситуации?
Заголовки = Новый Соответствие;
Заголовки.Вставить("Authorization", "Bearer " + Токен);
Параметры = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>
|<PayerPays>
|</PayerPays>
|";
НовыйЗапрос = Новый HTTPЗапрос(Адрес, Заголовки);
НовыйЗапрос.УстановитьТелоИзСтроки(Параметры);
SSL = Новый ЗащищенноеСоединениеOpenSSL;
Соединение = Новый HTTPСоединение(Сервер, 443, , , , 3000, SSL, Ложь);
//1Ответ = Соединение.ВызватьHTTPМетод("POST", НовыйЗапрос);
//2Ответ = Соединение.Записать(НовыйЗапрос)
HTTPОтвет = Соединение.ОтправитьДляОбработки(НовыйЗапрос);
А скриншот это откуда?
Попробуйте сохранить ваш XML в файл на диске и посмотреть есть ли там эти символы.
Vofka @ Сегодня, 18:08
,
Скриншот из Proxyman
Это я полез копаться что ж собственно шлет 1С наружу
В режиме обычного просмотра ничего не видно.
В Hex какие-то символы.
Банк вот это показывает.
Вот про файл я не понял, простите.
Как записать в файл данные из объекта НовыйЗапрос?
Если я в переменную Параметры напишу что угодно (какой-то "тест") то потом эта строчка через НовыйЗапрос.УстановитьТелоИзСтроки(Параметры) попадает в НовыйЗапрос
kuzma2000 @ Сегодня, 18:19
,
Вот что прислал банк.
Я пробовал в качестве тела сообщения писать любой тестовый текст - всегда есть 3 символа.
Видимо их некорректно парсит банк.
Емть такая мулька. Решения не помню. Гугл в помощь.BOL или чтото похлжее
sava1 @ Сегодня, 18:38
,
Попробовал
НовыйЗапрос.УстановитьТелоИзСтроки(Параметры, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
То же самое
Почитал - таки да, EF BB BF это как раз BOM для UTF-8
Но блин не выключаеться почему-то.
kuzma2000, а если писать строку в кодировке ANSI?
Только что быстренько нагуглил такое:
ЗТ = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.ANSI);
ЗТ.Закрыть();
ЗТ = Новый ЗаписьТекста(ИмяФайла,,, Истина, Символы.ПС);
ЗТ.Записать(Данные);
ЗТ.Закрыть();
Vofka @ Сегодня, 19:15
,
Попробовал так
НовыйЗапрос.УстановитьТелоИзСтроки(Параметры, КодировкаТекста.ANSI ,ИспользованиеByteOrderMark.НеИспользовать);
Все равно добавляет в тело BOM
Vofka @ Сегодня, 19:20
,
Будем пробовать, спасибо.
Сделал, вроде работает.
Осталось банку попросить првоерить.
Глупая ошибка была.
Vofka @ Вчера, 9:49
,
Была похожая проблема. Сделал так на MS Windows
ТекстДок = Новый COMОбъект("scripting.filesystemobject");
ТекстФайл = ТекстДок.createtextfile(ИмяФайла);
Стр = "<?xml version=""1.0"" encoding=""windows-1251""?> и здесь все тело файла
ТекстФайл.write(Стр);
ТекстФайл = 0;
ТекстДок = 0;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua