Имя: Пароль:
1C
 
Передать POST запросом массив.
0 Zombi
 
16.03.22
15:12
Передаю пост запросом данные. Попросили сделать массивом. Сделал вот так:

HTTPСоединение = Новый HTTPСоединение("4553548482/",,,,,,Новый ЗащищенноеСоединениеOpenSSL(), Ложь);
            
            ЗаписьJSON = Новый ЗаписьJSON;
            тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);  
            ЗаписьJSON.УстановитьСтроку(тПараметрыJSON);
            
            
            МассивДанныхJSON = Новый Массив;
            СтруктураДанныхJSON = Новый Структура;
            
            тДанные = Новый Структура;
            тДанные.Вставить("id", ГУИДКонтрагента);
            тДанные.Вставить("type", "kontragent");
            тДанные.Вставить("event", "add");
            
            тДанные.Вставить("name", Источник.Наименование);
            
            тДанные.Вставить("fullname", Источник.НаименованиеПолное);
            
            тДанные.Вставить("inn", Источник.ИНН);
            
            тДанные.Вставить("kpp", Источник.КПП);
            
            тДанные.Вставить("kommentarii", Источник.Комментарий);
            
            МассивДанныхJSON.Добавить(тДанные);
            
            СтруктураДанныхJSON.Вставить("data", МассивДанныхJSON);
            
            ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON);
            СтрокаJS = ЗаписьJSON.Закрыть();
            запросPOST = Новый HTTPЗапрос("");
            
            запросPOST.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded");
            запросPOST.УстановитьТелоИзСтроки("mData="+СтрокаJS,"utf-8",ИспользованиеByteOrderMark.НеИспользовать);
            
            
            
            Ответ = HTTPСоединение.ОтправитьДляОбработки(запросPOST);


Попросили без JSON. Как передать без JSON?
1 lite777
 
16.03.22
15:29
запросPOST.УстановитьТелоИзСтроки("mData="+ СтруктураДанныхJSON,"utf-8",ИспользованиеByteOrderMark.НеИспользовать);
2 Kassern
 
16.03.22
15:32
(0) не хотят json, пихайте им xml
3 Zombi
 
16.03.22
15:34
(1) Просто структуру передать?
4 Ёпрст
 
16.03.22
15:55
(0) передавай мультипартом..
5 Zombi
 
16.03.22
16:07
(4) А это как? Не очень я шарю во всех этих запросах джет, пост.
6 ololoraise
 
16.03.22
16:15
(5) так, а что требуют от тебя?
7 Zombi
 
16.03.22
16:19
(6) При изменении контрагента передатьпост запросом в массиве его реквизиты(ИД, ИНН, КПП, Нименование и.т.д.)
8 ololoraise
 
16.03.22
16:20
(7) Так?


Попытка
        WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
        WinHttp.Option(2,"utf-8");
        WinHttp.Open("POST",url,0);
        WinHttp.SetRequestHeader("Accept-Language", "ru");
        WinHttp.SetRequestHeader("Accept-Charset","utf-8");
        WinHttp.setRequestHeader("Content-Language", "ru");
        WinHttp.setRequestHeader("Content-Charset", "utf-8");
        WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
        
    ПараметрыПОСТ = "id=" + ГУИДКонтрагента;
    ПараметрыПОСТ = ПараметрыПОСТ + "&" + "type", "kontragent";
    // ну и так все дальше
    WinHttp.Send(ПараметрыПОСТ);
        ТекстОтвета = WinHttp.ResponseText();
    Исключение
        Сообщить(ОписаниеОшибки());
КонецПопытки;
9 ololoraise
 
16.03.22
16:21
Тут поспешил:

ПараметрыПОСТ = ПараметрыПОСТ + "&" + "type=" + "kontragent";
10 Zombi
 
16.03.22
16:24
(8) Точно, амперсант работает. Спасибо!
11 Zombi
 
16.03.22
16:24
(9) Да, примерно так и сделал.
Основная теорема систематики: Новые системы плодят новые проблемы.