@sapul

Как сделатьPOST запрос из 1С к API сайта?

Добрый день! Не могу понять где ошибся. Задача: API позволяет выложить любой файл, и в случае успеха возвращается ответ с кодом 200 и данными 'OK'.
В противном случае возвращается ответ с кодом 404.
Пробую сделать текстовый файл, с содержимым 123. И затем отправить его на сервер, при помощи этого API.
Запрос должен отправляться методом POST на URL 95.68.246.86:7000/api/v1 и помимо файла, необходимо отправлять поле:
Название поля: req
Значение поля: test
Попытка решения:
мяФайлаДляПередачи = "d:\temp\tmp\request.txt";

Соединение = Новый HTTPСоединение("95.68.246.86:7000");

ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
ЗаголовокHTTP.Вставить("Content-Disposition: form-data; filename=" + ИмяФайлаДляПередачи);
Запрос = Новый HTTPЗапрос("/api/v1/",ЗаголовокHTTP);
Запрос.УстановитьТелоИзСтроки("&req=test");

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

ФайлРезультата = ПолучитьИмяВременногоФайла();

Соединение.ОтправитьДляОбработки(Запрос, ФайлРезультата);

ОтветВВидеСтроки = Ответ.ПолучитьТелоКакСтроку("UTF-8");

Сообщить("Ответ: " + ОтветВВидеСтроки);
Сообщить("Ответ1: " + Ответ.КодСостояния);
Сообщить("Ответ2: " + Ответ.ПолучитьТелоКакДвоичныеДанные());

Сообщить("Hello Pleace!!! - 1");

// Получаем ответ веб-сервера на POST-запрос
// в виде текста
ТекстовыйФайлОтвет = Новый ТекстовыйДокумент;
ТекстовыйФайлОтвет.Прочитать(ФайлРезультата,КодировкаТекста.UTF8);
СтрокаОтветСервера = ТекстовыйФайлОтвет.ПолучитьТекст();

Сообщить("Ответ3: " + СтрокаОтветСервера);

Результат выполнения
Ответ:
Ответ1: 404
Ответ2:
Hello Pleace!!! - 1
Ответ3:
  • Вопрос задан
  • 9555 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Dementor
программист, архитектор, аналитик
Для начала вам нужно самим разобраться как файлы отправляются в сообщениях HTTP. Посмотрите RFC-1867, где описаны способы отправки файлов.

В вашем случае вы даже не пытаетесь отправлять файл. Вы отправляете вместо файла строчку "&req=test" (которую, как я подозреваю, вообще нужно было отправлять в конце адреса, как GET-параметр), а в заголовке пакета пишете путь к файлу на вашем компьютере. Что может сервер сделать с вашим локальным путем?

Рекомендую прочесть статью https://infostart.ru/public/20017/ и особенно ее комментарии (под конец там будет пример кода для платформы 8.3 без использования промежуточных временных файлов).
Ответ написан
@sapul Автор вопроса


Отправить

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы