API Запрос с типом multipart/form-data
Доброго времени суток.
Имеется APIhttps://cloud.bazissoft.ru/openapi
Сделано успешно несколько get и post запросов с типом application/json-patch+json
Цель поменять статус документа зная его ID
//curl -X PUT "https://cloud.bazissoft.ru/api-cutting-public/orders/127337/status"
//-H "accept: application/json"
//-H "apiKey: Ключ"
//-H "Content-Type: multipart/form-data"
//-d {"statusId":"9"}
В Swagger запрос проходит успешно.
Уперся в multipart/form-data . Ответ запроса 405.
Ниже код.
Подскажите что не так делаю!
Соединение = Новый HTTPСоединение("cloud.bazissoft.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Заголовки=Новый Соответствие;
Заголовки.Вставить("apiKey","Ключ");
Заголовки.Вставить("accept","application/json");
Заголовки.Вставить("Content-Type","multipart/form-data");
СтруктураД=Новый Структура();
СтруктураД.Вставить("statusId","9");
ЗаписьJSON = Новый ЗаписьJSON;
тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
ЗаписьJSON.УстановитьСтроку(тПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON,СтруктураД,);
СтрокаJSON=ЗаписьJSON.Закрыть();
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");
Тело = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, "");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
ЗаписьДанных.ЗаписатьСтроку(СтрокаJSON);
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
ЗаписьДанных.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
Запрос = Новый HTTPЗапрос("/api-cutting-public/orders/"+IDДокумента+"/status",Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
Ответ=Соединение.ОтправитьДляОбработки(Запрос);
Имеется API
Сделано успешно несколько get и post запросов с типом application/json-patch+json
Цель поменять статус документа зная его ID
//curl -X PUT "https://cloud.bazissoft.ru/api-cutting-public/orders/127337/status"
//-H "accept: application/json"
//-H "apiKey: Ключ"
//-H "Content-Type: multipart/form-data"
//-d {"statusId":"9"}
В Swagger запрос проходит успешно.
Уперся в multipart/form-data . Ответ запроса 405.
Ниже код.
Подскажите что не так делаю!
Соединение = Новый HTTPСоединение("cloud.bazissoft.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());
Заголовки=Новый Соответствие;
Заголовки.Вставить("apiKey","Ключ");
Заголовки.Вставить("accept","application/json");
Заголовки.Вставить("Content-Type","multipart/form-data");
СтруктураД=Новый Структура();
СтруктураД.Вставить("statusId","9");
ЗаписьJSON = Новый ЗаписьJSON;
тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина);
ЗаписьJSON.УстановитьСтроку(тПараметрыJSON);
ЗаписатьJSON(ЗаписьJSON,СтруктураД,);
СтрокаJSON=ЗаписьJSON.Закрыть();
Разделитель = СтрЗаменить(Новый УникальныйИдентификатор(), "-", "");
Тело = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Тело, , , Символы.ВК + Символы.ПС, "");
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
ЗаписьДанных.ЗаписатьСтроку(СтрокаJSON);
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
ЗаписьДанных.Закрыть();
ДанныеТела = Тело.ЗакрытьИПолучитьДвоичныеДанные();
Запрос = Новый HTTPЗапрос("/api-cutting-public/orders/"+IDДокумента+"/status",Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ДанныеТела);
Ответ=Соединение.ОтправитьДляОбработки(Запрос);
По теме из базы знаний
- Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram
- .Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.
- Отправка почты через сервис mailgun.com (с прикреплением файлов)
- Telegram bot API - разбор документации с примерами
- Подключение к http сервису через multipart/form-data в 1С
Найденные решения
(1) На вот, поставишь только нужный Key и нужный статус (он число, а не строка, если что, судя по api)
ЗЫ: Поправил. Так хоть возвращает что не авторизован, как и в сахаре. Втыкай свой Key в заголовок и нужный OrderId, должно работать
ЗЫ: Поправил. Так хоть возвращает что не авторизован, как и в сахаре. Втыкай свой Key в заголовок и нужный OrderId, должно работать
ВремГраница = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ТелоЗапроса = Новый ТекстовыйДокумент();
ТелоЗапроса.РазделительСтрок = Символы.CR+Символы.LF;
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""statusId"";");
ТелоЗапроса.ДобавитьСтроку("");
ТелоЗапроса.ДобавитьСтроку(9);
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--");
ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст();
Заголовки=Новый Соответствие;
Заголовки.Вставить("apiKey","test");
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=" + ВремГраница);
HTTPЗапрос = Новый HTTPЗапрос("api-cutting-public/orders/127337/status",Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Соединение = Новый HTTPСоединение("cloud.bazissoft.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
HTTPОтвет = Соединение.Записать(HTTPЗапрос);
Сообщить(HTTPОтвет.КодСостояния);
Сообщить(HTTPОтвет.ПолучитьТелоКакСтроку());
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) На вот, поставишь только нужный Key и нужный статус (он число, а не строка, если что, судя по api)
ЗЫ: Поправил. Так хоть возвращает что не авторизован, как и в сахаре. Втыкай свой Key в заголовок и нужный OrderId, должно работать
ЗЫ: Поправил. Так хоть возвращает что не авторизован, как и в сахаре. Втыкай свой Key в заголовок и нужный OrderId, должно работать
ВремГраница = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ТелоЗапроса = Новый ТекстовыйДокумент();
ТелоЗапроса.РазделительСтрок = Символы.CR+Символы.LF;
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""statusId"";");
ТелоЗапроса.ДобавитьСтроку("");
ТелоЗапроса.ДобавитьСтроку(9);
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--");
ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст();
Заголовки=Новый Соответствие;
Заголовки.Вставить("apiKey","test");
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=" + ВремГраница);
HTTPЗапрос = Новый HTTPЗапрос("api-cutting-public/orders/127337/status",Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Соединение = Новый HTTPСоединение("cloud.bazissoft.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
HTTPОтвет = Соединение.Записать(HTTPЗапрос);
Сообщить(HTTPОтвет.КодСостояния);
Сообщить(HTTPОтвет.ПолучитьТелоКакСтроку());
Показать
(7)
(7)
Спасибо.
Все взлетело.
(7)
ВремГраница = СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
ТелоЗапроса = Новый ТекстовыйДокумент();
ТелоЗапроса.РазделительСтрок = Символы.CR+Символы.LF;
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""statusId"";");
ТелоЗапроса.ДобавитьСтроку("");
ТелоЗапроса.ДобавитьСтроку(9);
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--");
ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст();
Заголовки=Новый Соответствие;
Заголовки.Вставить("apiKey","test");
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=" + ВремГраница);
HTTPЗапрос = Новый HTTPЗапрос("api-cutting-public/orders/127337/status",Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Соединение = Новый HTTPСоединение("cloud.bazissoft.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
HTTPОтвет = Соединение.Записать(HTTPЗапрос);
Сообщить(HTTPОтвет.КодСостояния);
Сообщить(HTTPОтвет.ПолучитьТелоКакСтроку());
ПоказатьТелоЗапроса = Новый ТекстовыйДокумент();
ТелоЗапроса.РазделительСтрок = Символы.CR+Символы.LF;
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница);
ТелоЗапроса.ДобавитьСтроку("Content-Disposition: form-data; name=""statusId"";");
ТелоЗапроса.ДобавитьСтроку("");
ТелоЗапроса.ДобавитьСтроку(9);
ТелоЗапроса.ДобавитьСтроку("--" + ВремГраница + "--");
ТелоЗапросаСтрока = ТелоЗапроса.ПолучитьТекст();
Заголовки=Новый Соответствие;
Заголовки.Вставить("apiKey","test");
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=" + ВремГраница);
HTTPЗапрос = Новый HTTPЗапрос("api-cutting-public/orders/127337/status",Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапросаСтрока, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Соединение = Новый HTTPСоединение("cloud.bazissoft.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL());
HTTPОтвет = Соединение.Записать(HTTPЗапрос);
Сообщить(HTTPОтвет.КодСостояния);
Сообщить(HTTPОтвет.ПолучитьТелоКакСтроку());
Спасибо.
Все взлетело.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот