Имя: Пароль:
1C
1С v8
POST запрос в 1С
,
0 Pat4kord
 
13.07.18
11:08
Добрый день, коллеги!

Подскажите пожалуйста, доводилось ли кому-нибудь отправлять POST- запросы с несколькими параметрами от 1С к Web серверу.

Если есть приведите листинг кода где происходит отправка нескольких параметров, например login строка, пароль строка и файл xml, ну или что-то близкое к этому.
1 Андрюха
 
13.07.18
11:09
2 Pat4kord
 
13.07.18
12:27
Ух ты, какой ты умничка, спасибо большое я сам никогда бы не догадался.

А если серьёзно там нет примеров которые я описал.
3 zippygrill
 
13.07.18
12:30
В теле передай параметры
4 zippygrill
 
13.07.18
12:31
вот в теле
ПараметрыЗапроса.ТелоКакСтрока = "grant_type=password&username=" + ПараметрыЗапроса.username + "&password=" + ПараметрыЗапроса.password

вот в адресе
ПараметрыЗапроса.АдресЗапроса = "/api/WorkshopWorkflow/GetWorkshopWorkflowChanges?lastSyncDateTime=" + ДатаВремяПолученияИзменений
5 Pat4kord
 
13.07.18
12:33
Я понимаю что параметры нужно передать в теле и в принципе всё хорошо когда 2 параметра, это 2 строки.

А как быть если первый параметр это строка, а второй это xml файл который я должен отправить для обработки?
6 Borteg
 
13.07.18
12:37
(5) логин и пароль наверное в заголовках передается, есть же наверное описание сервиса?
7 novichok79
 
13.07.18
12:37
Соединение = РезультатСоединенияСAmoCRM.Соединение;
    БылиОшибкиПриПодключенииКAmoCRM = РезультатСоединенияСAmoCRM.БылиОшибкиПриПодключенииКAmoCRM;
    ОписаниеОшибки = РезультатСоединенияСAmoCRM.ОписаниеОшибки;

    Если Соединение = Неопределено Тогда

        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
        СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru = 'При подключении к AmoCRM произошла ошибка:
              |%1'"), ОписаниеОшибки));

    Иначе

        АдресСкрипта = "/private/api/auth.php?type=json";
        HTTPЗапрос = Новый HTTPЗапрос(АдресСкрипта);
        
        HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
        HTTPЗапрос.Заголовки.Вставить("Accept-Language", "ru");        
        HTTPЗапрос.Заголовки.Вставить("Accept-Charset", "utf-8");
        HTTPЗапрос.Заголовки.Вставить("Content-Language", "ru");
        HTTPЗапрос.Заголовки.Вставить("Content-Charset", "utf-8");
        HTTPЗапрос.Заголовки.Вставить("User-Agent", "amoCRM-API-client/1.0");

        HTTPЗапрос.УстановитьТелоИзСтроки(
        "USER_LOGIN=" + Объект.ЛогинПользователя +
        "&USER_HASH=" + Объект.КлючПользователя,
        КодировкаТекста.UTF8, ИспользованиеByteOrderMark.Авто);
        
        БылиОшибкиПриОтправкеHTTPЗапроса = Ложь;
        БылиОшибкиПриРасшифровкеHTTPОтвета = Ложь;
        
        Попытка

            HTTPОтветСервера = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
            
        Исключение

            БылиОшибкиПриОтправкеHTTPЗапроса = Истина;
            
            ИнформацияОбОшибке = ПолучитьИнформациюОбОшибке(ИнформацияОбОшибке());
            ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);

            ТекстСообщения =
            СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            НСтр("ru = 'При авторизации в AmoCRM произошла ошибка:
            |%1'"), ОписаниеОшибки);

            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, , , , БылиОшибкиПриОтправкеHTTPЗапроса);

            ЗаписьЖурналаРегистрации(
            НСтр("ru = 'Обмен с AmoCRM. Авторизация пользователя на сервере'", КодОсновногоЯзыка),
            УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));

        КонецПопытки;
8 Pat4kord
 
13.07.18
12:40
Спасибо.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший