Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УТ 11.4: ЧтениеJSON заменяется буква "о" на "п"

УТ 11.4: ЧтениеJSON заменяется буква "о" на "п"
Я
   Deal with it
 
29.09.21 - 14:02
Собственно УТ 11.4.13.271, платформа 8.3.18.1289
В результате следующего кода где-то слетает кодировка:

СтрокаПараметраПолучения = Новый HTTPЗапрос("/api-1c/market-sku-info?sku=" + ИДМаркета); //ИДМаркета     
СерверИсточник = "ultrasport.ru";    
    
    Попытка    
        HTTP = Новый HTTPСоединение(СерверИсточник, , , , , , Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено));    
    Исключение
        Сообщить("Не удалось создать новое HTTPСоединение!");
        Возврат "";
    КонецПопытки;

Попытка
    Результат = HTTP.Получить(СтрокаПараметраПолучения);
    Если Результат.КодСостояния = 200 Тогда
            
        Ответ = Результат.ПолучитьТелоКакСтроку();
            
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ);
        Данные = ПрочитатьJSON(ЧтениеJSON);
        ЧтениеJSON.Закрыть();
            
        Артикул = Данные.artikul;
                Модель = Данные.model;
        Иначе
       Сообщить("Код ответа " + Результат.КодСостояния);
    КонецЕсли;
Исключение        
  Возврат "";
КонецПопытки;

конкретно в этом возвращаемом параметре Модель = Данные.model буква "о" меняется на "п".
   Deal with it
 
1 - 29.09.21 - 14:03
(0) для примера вот СКУ
14980-0YXRgNC\0Lw=
если вы в браузере выполните этот запрос, то вернет {"model":"хром","artikul":"A1005035"}, а в 1С "хрпм"
   Deal with it
 
2 - 29.09.21 - 14:03
В чем может быть прикол?
   polosov
 
3 - 29.09.21 - 14:07
(2) Уже после 
Ответ = Результат.ПолучитьТелоКакСтроку();
есть замена?
   Garykom
 
4 - 29.09.21 - 14:08
проверить чем то мимо 1С
указать кодировки
   Garykom
 
5 - 29.09.21 - 14:09
и на другой платформе 1С 
но имхо вряд ли бага в 1С
   Deal with it
 
6 - 29.09.21 - 14:15
(4) кодировки ставил, не помогло
   Kassern
 
7 - 29.09.21 - 14:16
(3) там реально почему то символ меняется, уже как получаешь строку с ответа)
   Fragster
 
8 - 29.09.21 - 14:17
(1) смотри в браузере в девтулзах что, а не то, как это выглядит в окне. может это они как раз от скрэпинга/парсинга защищаются как ЦИК - особым шрифтом с переставленными символами
   Deal with it
 
9 - 29.09.21 - 14:20
(3) уже в самом "ответ" {"model":"хрпм","artikul":"A1005035"}
   Fragster
 
10 - 29.09.21 - 14:21
   Deal with it
 
11 - 29.09.21 - 14:21
(8) можно поподробней куда смотреть? как выявить этот шрифт?
   Fragster
 
12 - 29.09.21 - 14:22
(11) никуда не смотри, код рабочий
   Deal with it
 
13 - 29.09.21 - 14:22
так в чем же прикол?
   Fragster
 
14 - 29.09.21 - 14:22
(13) ну попробуй на другом релизе платформы или на другом компе
   Fragster
 
15 - 29.09.21 - 14:22
под другим пользюком
   Deal with it
 
16 - 29.09.21 - 14:23
(14) ок, глянем на следующем релизе платформы годном.
   Kassern
 
17 - 29.09.21 - 14:28
(14) странно, у меня так как у ТС выводится. https://yadi.sk/i/MFIKkue2K2IDjg
   Kassern
 
18 - 29.09.21 - 14:29
(17) платформа 8.3.19.1264
   Мультук
 
19 - 29.09.21 - 14:34
(0)
1С:Предприятие 8.3 (8.3.18.1334)

Код автора = "хрпм"


аа = КоннекторHTTP.GetJson("https://ultrasport.ru/api-1c/market-sku-info?sku=14980-0YXRgNC\0Lw=");
Выдает "хром"

Так что разбирайся с кодировками, имхо
   Kassern
 
20 - 29.09.21 - 14:41
блин все гораздо проще... вместо вашего артикула напишите sku=14980-0YXRgNC%5C0Lw%3D и будет вам счастье
   Kassern
 
21 - 29.09.21 - 14:42
браузер сам экранирует символы, а вот в 1ске надо самому позаботиться это сделать, что собственно и делает модуль КоннекторHTTP.
   Kassern
 
22 - 29.09.21 - 14:48
АриткулУРЛ=КодироватьСтроку("14980-0YXRgNC\0Lw=",СпособКодированияСтроки.КодировкаURL);
Запрос=Новый HTTPЗапрос("/api-1c/market-sku-info?sku="+АриткулУРЛ);
   Deal with it
 
23 - 29.09.21 - 15:27
(22) Спасибо! Заработало. Возьму за правило кодировать строки перед отправкой в качестве параметра.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.