Имя: Пароль:
1C
1С v8
При выполнении HTTP-запроса символ "\" преобразуется в "/". Как этого избежать?
0 Alpen906
 
02.02.21
08:23
После обновления платформы с 8.3.16 на 8.3.18 перестал работать один из HTTP-запросов системы взаимодействия в внешним сервисом. После попыток понять причину на тестовом стенде обнаружено, что при выполнении HTTP-запроса методом HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос) символ "\" преобразуется в "/". Запрос выполняется стандартно.
ssl = Новый ЗащищенноеСоединениеOpenSSL();
HTTPСоединение = Новый HTTPСоединение(ИмяХоста, , , , , , ssl );
HTTPЗапрос = Новый HTTPЗапрос;
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
НазваниеКоманды = "wialon/ajax.html?svc=unit/update_sensor";
HTTPЗапрос.АдресРесурса    = НазваниеКоманды + СтрокаЗапроса;
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);

Переменная СтрокаЗапроса содержит параметр, заданный строкой СтрокаКонфигурацииДатчика     = "{\""appear_in_popup\"":true,\""show_time\"":false,\""pos\"":1,\""cm\"":0,\""mu\"":\""0\"",\""act\"":1,\""text_params\"":0,\""uct\"":0,\""timeout\"":0,\""ci\"":{}}"; Так вот эта строка после выполнения запроса преобразуется к следующему виду:"{/"appear_in_popup/":true,/"show_time/":false,/"pos/":1,/"cm/":0,/"mu/":/"0/",/"act/":1,/"text_params/":0,/"uct/":0,/"timeout/":0,/"ci/":{}}". То есть символ "\" преобразуется в "/". Как этого избежать? Экранировать пробовал. Не помогло. Или неправильно экранирую. До обновления платформы запрос работал нормально. Прошу помощи у уважаемого сообщества. Буду признателен за любой пинок в нужном направлении.
1 ДенисЧ
 
02.02.21
08:28
Внезапный вопрос.
Аназачем вот такое надо было делать: \""appear_in_popup\"":true,
?
Виалон без слешей прекрасно понимает.
2 Alpen906
 
02.02.21
08:30
Строчку прислали с линии поддержки Виалон. Думаю вот по этой причине:
Sensor configuration
Sensor configuration params:

:!: Note: JSON-object is sent as a string, that's why it must be within double quotes, all key and value double quotes must be escaped (\“).

            "{
        \"act\":<bool>,
        \"appear_in_popup\":<bool>,
        \"ci\":<object>,
        \"filter\":<long>,
        \"mu\":<uint>,
        \"pos\":<uint>,
        \"show_time\":<bool>,
        \"unbound_code\":<text>,
        \"validate_driver_unbound\":<bool>,
        \"timeout\":<uint>,
        \"uct\":<bool>,
        \"lower_bound\":<double>,
        \"upper_bound\":<double>
         }"
3 ДенисЧ
 
02.02.21
08:38
У меня спокойно проходило без.
4 ДенисЧ
 
02.02.21
08:38
Это они пример для жабоскрипта и подобных языков дали, наверное.
5 Alpen906
 
02.02.21
08:43
(3) Сейчас проверю.
(4) Раньше работало. Теперь перестало.
6 craxx
 
02.02.21
08:44
(2) не надо там никаких бэкслэшй. Все без них работает
7 Alpen906
 
02.02.21
08:48
(3)(6). Спасибо огромное. Действительно все работает без бэкслэшей. Заморочился.
8 Alpen906
 
02.02.21
10:11
В дополнение к вопросу. Раньше для переноса строк в текстовых сообщениях использовал последовательность "\n". Теперь при выполнении запроса она аналогично преобразуется к "/n". Естественно переноса строки не происходит. Как правильно указать перенос строки. Символы.ПС не помогли.
9 Alpen906
 
02.02.21
10:18
(8) Поторопился. Символы.ПС работает. Все норм. Спасибо, коллеги.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн