Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:30

Работа с api УТМ, загрузка файла.

Автор Панда, 21 янв 2022, 14:37

0 Пользователей и 1 гость просматривают эту тему.

Панда

В утм есть свой апи, к которому можно обращаться из 1С.
Меня интересует в частности возможность подписания файла ключом, на основании которого установлен утм.
Для этого нужно отправить нужный файл на http://localhost:8080/api/sign при условии, что утм установлен локально и в ответ по-идее получим подпись к этому файлу.
Есть пример использования этой функции на онове CURL. Код выглядит вот так:
curl -X POST "http://localhost:8080/api/sign" -H "accept: text/plain" -H "Content-Type: multipart/form-data" -F "data=@AnyFile.txt;type=text/plain"
Пробую выполнить тоже самое из 1С, но постоянно сыпется ошибка
{"timestamp":"2022-01-21T11:05:05.896+00:00","status":500,"error":"Internal Server Error","message":"Required request part 'data' is not present","path":"/api/sign"}
Что я делаю не так и что нужно поправить в моём коде?
&НаСервере
Процедура ТестУТМНаСервере()
//Создаём пустой файл
имяФайлаОтправки = ПолучитьимяВременногоФайла("xml");
ЗаписьТекста = Новый ЗаписьТекста(имяФайлаОтправки);
ЗаписьТекста.Закрыть();
ФайлОтправки = Новый Файл(имяФайлаОтправки);

Соединение = Новый HTTPСоединение("192.168.88.26",8080); // адрес утм
HTTPЗапрос=Новый HTTPЗапрос("/api/sign"); // api подписи документов
HTTPЗапрос.Заголовки.Вставить("Content-Type","multipart/form-data; boundary=123123123123");
HTTPЗапрос.Заголовки.Вставить("Accept-Charset", "utf-8");
HTTPЗапрос.Заголовки.Вставить("Content-Lenght", ФайлОтправки.Размер());
HTTPЗапрос.УстановитьИмяФайлаТела(ФайлОтправки.ПолноеИмя);
HTTPОтвет=Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Сообщить(HTTPОтвет.КодСостояния);
Сообщить(HTTPОтвет.ПолучитьТелоКакСтроку());
Попытка
    УдалитьФайлы(имяФайлаОтправки);
Исключение
КонецПопытки;
КонецПроцедуры

Поиск родных

Дайте ссылку на инструкции, в соответствии с которыми Вы это делаете!

Как-то странно, что надо отправлять файл самому себе и ожидать, что сам себе ответит нужной подписью.
Почему бы её там не взять без обиняков ?

Панда

Геннадий на Оби, чтобы получить подпись (контрольную сумму) на файл, его нужно куда-то для этого отправить .... других способов я не знаю.
http://localhost:8080/swagger-ui.html
описание по такой ссылке на компе, где установлен УТМ. Конкретный элемент API называется "api-sign-controller Подпись данных и проверка подписи"
И что значит "самому себе"? Файл отправляется сервису, который поднимается локально.
Ещё в примере запроса нашёл заголовок Payload с содержимым
------WebKitFormBoundaryJviqqBIZ6DqZcwze
Content-Disposition: form-data; name="data"; filename="AnyFile.txt"
Content-Type: text/plain


------WebKitFormBoundaryJviqqBIZ6DqZcwze--

В теории этот текст куда должен вставляться? boundary из примера естественно другой.

Поиск родных

Цитата: Панда от 21 янв 2022, 14:37Меня интересует в частности возможность подписания файла ключом, на основании которого установлен утм.
Для этого нужно отправить нужный файл на http://localhost:8080//sign при условии, что утм установлен локально
Дайте ссылку - откуда такое взято

Панда

Геннадий на Оби, ссылки не существует. Не потому что я олень, а потому что РАР не умеет писать инструкции к своим продуктам.
Как я это нашёл? Запускаем продукт, заходим по ссылке http://localhost:8080/swagger-ui.html#/
Видим вот такую штуку
https://disk.yandex.ru/i/iAa_t6tQa9kPOg

Находим в ней нужный нам пункт и видим вот такую штуку
https://disk.yandex.ru/i/gtQnHp07hH2yEg

Всё, других данных не существует. Там принцип такой, что "вот вам образец, а дальше как хотите."
Вот я и пытаюсь как-то разобраться как этим пользоваться.

Панда


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск