Имя: Пароль:
1C
1С v8
Не отрабатывает УстановитьТелоИзСтроки
0 Смотрящий от 1С
 
24.10.22
17:20
&НаКлиенте
Процедура МойЗапрос(Команда)
    
    Соединение = Новый HTTPСоединение("host.site",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);    
    
    ИмяПользователя = "user";
    Пароль = "12345";
    
    СтрокаАвторизации = ПолучитьBase64СтрокуИзДвоичныхДанных(
    ПолучитьДвоичныеДанныеИзСтроки(
    ""+ИмяПользователя+":"+Пароль,КодировкаТекста.UTF8,Ложь));  
    
    Фильтр = РезультатФильтра();
    
    Заголовки = Новый Соответствие;
    
    Заголовки.Вставить("accept", "application/json");
    Заголовки.Вставить("Api-Key", "Mvl9FkeRo39Dk");
    Заголовки.Вставить("Content-Type", "application/json");
    Заголовки.Вставить("Authorization", "Basic "+СтрокаАвторизации);     
    
    Запрос = Новый HTTPЗапрос("/api/catalog/list", Заголовки);
    Запрос.УстановитьТелоИзСтроки("text="+Фильтр);
    
    //в Фильтре строка
        //     {
        //"filter": {
        //"ACTIVE": "Y",
        //"IBLOCK_ID": "111"
        //}
        //}    
        // в постмене точно такой же фильтр отрабатывает. В 1с возвращает все без учета фильтра   Почему такое может быть?
        //
    
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    
    Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
    
КонецПроцедуры
1 Смотрящий от 1С
 
24.10.22
17:22
в Фильтре строка
             {
        "filter": {
        "ACTIVE": "Y",
        "IBLOCK_ID": "111"
        }
        }    
        // в постмене точно такой же фильтр отрабатывает. В 1с возвращает все без учета фильтра   Почему такое может быть?
        //
2 Смотрящий от 1С
 
24.10.22
17:34
Попробовал Запрос.ПолучитьТелоКакСтроку(). Там все отлично
text={
"filter": {
"ACTIVE": "Y",
"IBLOCK_ID": "111"
}
}
3 Kassern
 
24.10.22
17:39
(0) Я надеюсь вы тело через ЗаписьJSON собирали? С ИспользоватьBOM поиграйтесь в в УстановитьТелоИзСтроки
4 Смотрящий от 1С
 
24.10.22
17:51
(3) вот сборка фильтра Функция  РезультатФильтра()
    
    Данные = Новый Структура();
    Данные.Вставить("ACTIVE","Y");
    Данные.Вставить("IBLOCK_ID","111");
    Результат = ПростаяЗаписьJSON(Данные);    
    
    ДанныеФильтра = Новый Структура;
    ДанныеФильтра.Вставить("filter",Данные);
    РезультатФильтра = ПростаяЗаписьJSON(ДанныеФильтра);  
    
    Возврат РезультатФильтра;
    
КонецФункции
5 Kassern
 
24.10.22
17:53
(4) А что в ПростаяЗаписьJSON?
6 Смотрящий
 
24.10.22
17:57
Запрос.УстановитьТелоИзСтроки("text="+Фильтр) вот это смущает.

Попробуй фильтр обернуть в структуру:
Данные = Новый структура;
Данные.Вставить("text", РезультатФильтра()); и уже Данные сериализовать
7 Смотрящий от 1С
 
24.10.22
18:04
(6) не помогло. Попробовал прямо из отладчика скопировать значение фильтра и в Постмен вставить. Он отработал, то есть структура вроде правильная
(5) Функция ПростаяЗаписьJSON(Данные)
    
    ЗаписьJSON = Новый ЗаписьJSON;            
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON,Данные);            
    Возврат ЗаписьJSON.Закрыть();  
    
КонецФункции
8 Смотрящий от 1С
 
24.10.22
18:05
По этому примеру делал. Он отлично отрабатывает

Процедура Запрос(Команда)
    Соединение = Новый HTTPСоединение("speller.yandex.net",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    
    ТекстНаПроверку = "Предложение с ашибкой";
    
    Заголовки = Новый Соответствие;
    
    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
    
    Запрос = Новый HTTPЗапрос("/services/spellservice.json/checkText", Заголовки);
    Запрос.УстановитьТелоИзСтроки("text="+ТекстНаПроверку);
    
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
    
    Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);
КонецПроцедуры
9 Смотрящий от 1С
 
24.10.22
18:08
Решил ))
Вместо  Запрос.УстановитьТелоИзСтроки("text="+Фильтр);
сделал  Запрос.УстановитьТелоИзСтроки(Фильтр);
Всем спасибо
Закон Брукера: Даже маленькая практика стоит большой теории.