Ошибка post запроса

1. maksa2005 555 01.03.21 21:23 Сейчас в теме
Вот сам запрос
    Данные = Новый Структура;
    Данные.Вставить("secret_key",        "556f8f02e93924c4f39a6852a9_____");
    Данные.Вставить("task_obj",            "2");
    Данные.Вставить("task_message",        "мое служебное сообщение");
    Данные.Вставить("date_plan_end",    "2021-12-12");
    СтрокаJSON = СформироватьСтрокуJSONИзСтруктуры(Данные);
    
    СоединениеHTTP = Новый HTTPСоединение("service.delo-it.ru");    
    
    Заголовоки = Новый Соответствие();
    Заголовоки.Вставить("Content-type",         "application/json");
    
    ЗапросHTTP = Новый HTTPЗапрос("/modules/AZS/function.php?type=addTask", Заголовоки);         
    
    ЗапросHTTP.УстановитьТелоИзСтроки(Данные, "UTF-8", ИспользованиеByteOrderMark.НеИспользовать);
    Попытка
        HTTPОтвет = СоединениеHTTP.ОтправитьДляОбработки(ЗапросHTTP);
        Сообщить(HTTPОтвет.ПолучитьИмяФайлаТела());        
    Исключение
        HTTPОтвет = Новый Структура;
        Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    КонецПопытки;


Показать

ответ - пустой

если сделать все то же самое в postman
ответ - есть в js

куда копать не понимаю) подскажите
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. spacecraft 02.03.21 01:09 Сейчас в теме
(1) на скрине в постмане это данные формы, а не post запрос с json в body. Не так все просто. Ищите информацию, как передавать post запрос используя form-data.
Возможно у сервиса есть API, тогда воспользоваться им.
5. 1395969 71 02.03.21 02:46 Сейчас в теме
Одна из увиденных сразу ошибок: Неверный параметр для процедуры УстановитьТелоИзСтроки
Синтаксис:
УстановитьТелоИзСтроки(<Тело>, <Кодировка>, <ИспользоватьBOM>)
Параметры:
<Тело> (обязательный)
Тип: Строка.
Строка, которая будет записана в тело ответа.

У Вас вместо сроки передается структура


Набросал по Вашему образцу, как должно быть (с комментариями)

HTTPСоединение = Новый HTTPСоединение("service.delo-it.ru",,,,,,Новый  ЗащищенноеСоединениеOpenSSL());

//Создаем запись ЗаписьJSON
ЗаписьJSON = Новый ЗаписьJSON;
//Задаем параметры
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина);
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
//Формируем структуру в JSON
JSONQueryStructure = Новый Структура;
JSONQueryStructure.Вставить("secret_key", "556f8f02e93924c4f39a6852a9_____");
JSONQueryStructure.Вставить("task_obj", "2");
JSONQueryStructure.Вставить("task_message", "мое служебное сообщение");
JSONQueryStructure.Вставить("date_plan_end", "2021-12-12");
//Здесь нам платформа переделывает нашу структуру в строку данных в формате JSON 
ЗаписатьJSON(ЗаписьJSON, JSONQueryStructure);
СтрокаJSON = ЗаписьJSON.Закрыть();
//создаем запрос данных методом POST
ЗапросPOST = Новый HTTPЗапрос;
ЗапросPOST.АдресРесурса = "/modules/AZS/function.php?type=addTask";
ЗапросPOST.Заголовки.Вставить("Accept", "application/json");
//Здесь задаем текст нашей отформатированной строки + задаем формат сроки 
ЗапросPOST.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
//Отправляем для обрааботки на наш сервер
Попытка
    ОтветPOST = HTTPСоединение.ОтправитьДляОбработки(ЗапросPOST);
    СтрокаОтветаPOST = ОтветPOST.ПолучитьТелоКакСтроку(КодировкаТекста.ANSI);
    
    //Далее, например, так
    
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = СтрокаОтветаPOST;
    Сообщение.Сообщить();
    
    //Далее - продолжение других возможных действий с ответом от сервера
    
    //Прочитаем полученную строку
    ЧтениеJSONPOST = Новый ЧтениеJSON;
    ЧтениеJSONPOST.УстановитьСтроку(СтрокаОтветаPOST);
    //Пока для отладки Структура = ПрочитатьJSON(ЧтениеJSON);
    СтруктураPOST = ПрочитатьJSON(ЧтениеJSONPOST);
    ЧтениеJSONPOST.Закрыть();
    
Исключение
    Сообщение = Новый СообщениеПользователю();
    Сообщение.Текст = ОписаниеОшибки();
    Сообщение.Сообщить();
КонецПопытки;
Показать
6. maksa2005 555 02.03.21 05:53 Сейчас в теме
(5)
HTTPСоединение = Новый HTTPСоединение("service.delo-it.ru",,,,,,Новый ЗащищенноеСоединениеOpenSSL());

//Создаем запись ЗаписьJSON
ЗаписьJSON = Новый ЗаписьJSON;
//Задаем параметры
ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", Истина);
ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
//Формируем структуру в JSON
JSONQueryStructure = Новый Структура;
JSONQueryStructure.Вставить("secret_key", "556f8f02e93924c4f39a6852a9_____");
JSONQueryStructure.Вставить("task_obj", "2");
JSONQueryStructure.Вставить("task_message", "мое служебное сообщение");
JSONQueryStructure.Вставить("date_plan_end", "2021-12-12");
//Здесь нам платформа переделывает нашу структуру в строку данных в формате JSON
ЗаписатьJSON(ЗаписьJSON, JSONQueryStructure);
СтрокаJSON = ЗаписьJSON.Закрыть();
//создаем запрос данных методом POST
ЗапросPOST = Новый HTTPЗапрос;
ЗапросPOST.АдресРесурса = "/modules/AZS/function.php?type=addTask";
ЗапросPOST.Заголовки.Вставить("Accept", "application/json");
//Здесь задаем текст нашей отформатированной строки + задаем формат сроки
ЗапросPOST.УстановитьТелоИзСтроки(СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
//Отправляем для обрааботки на наш сервер
Попытка
ОтветPOST = HTTPСоединение.ОтправитьДляОбработки(ЗапросPOST);
СтрокаОтветаPOST = ОтветPOST.ПолучитьТелоКакСтроку(КодировкаТекста.ANSI);

//Далее, например, так

Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = СтрокаОтветаPOST;
Сообщение.Сообщить();

//Далее - продолжение других возможных действий с ответом от сервера

//Прочитаем полученную строку
ЧтениеJSONPOST = Новый ЧтениеJSON;
ЧтениеJSONPOST.УстановитьСтроку(СтрокаОтветаPOST);
//Пока для отладки Структура = ПрочитатьJSON(ЧтениеJSON);
СтруктураPOST = ПрочитатьJSON(ЧтениеJSONPOST);
ЧтениеJSONPOST.Закрыть();

Исключение
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
Показать


Новый ЗащищенноеСоединениеOpenSSL())
я не использую т.к. работаю по 80 порту, а не по 443

если его убрать = суть ответа так же. Ответ пустой
13. 1395969 71 02.03.21 12:55 Сейчас в теме
(6) Выполнил тестовый запрос POST на этот ресурс. Результат - действительно пустой
Проблема не в коде 1С
Прилагаю скриншот. Убедитесь, что этот ресурс умеет обрабатывать этот POST-запрос
Прикрепленные файлы:
14. maksa2005 555 02.03.21 12:57 Сейчас в теме
(13)я уже все сделал. спасибо
2. Степной 27 01.03.21 21:51 Сейчас в теме
(1) Как минимум, даты разные передаете.
7. maksa2005 555 02.03.21 05:54 Сейчас в теме
(2)дело не в дате. хотя я проверил и на правильные даты. толку нет
3. shurikvz 01.03.21 22:31 Сейчас в теме
ответ - пустой

Статус какой? Также 200?

если сделать все то же самое в postman

Заголовки покажите
8. maksa2005 555 02.03.21 06:13 Сейчас в теме
(3)так же 200.
Прикрепленные файлы:
9. Zixxx 02.03.21 06:24 Сейчас в теме +1 $m
(8) В фидлере можно проверить в чем разница в передаваемых данных
10. maksa2005 555 02.03.21 06:25 Сейчас в теме
(9)щас попробую разобраться
11. maksa2005 555 02.03.21 06:51 Сейчас в теме
(9)я понял одно. надо передавать данные в примерно таком варианте
    ИмяФайлаОтправки = КаталогВременныхФайлов() + "post.txt"; 
    Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); 
    ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаОтправки, КодировкаТекста.ANSI, Символы.ПС, Ложь); 
    ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
    ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""secret_key"""); 
    ФайлОтправки.ЗаписатьСтроку("");
    ФайлОтправки.ЗаписатьСтроку("556f8f02e93924c4f39a6852a955b___");
    
    ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
    ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""task_obj"""); 
    ФайлОтправки.ЗаписатьСтроку("");
    ФайлОтправки.ЗаписатьСтроку("2");
    
    ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
    ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""task_message"""); 
    ФайлОтправки.ЗаписатьСтроку("");
    ФайлОтправки.ЗаписатьСтроку("3");
    
    ФайлОтправки.ЗаписатьСтроку("--" + Boundary); 
    ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""date_plan_end"""); 
    ФайлОтправки.ЗаписатьСтроку("");
    ФайлОтправки.ЗаписатьСтроку("4");
Показать
12. maksa2005 555 02.03.21 06:57 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот