Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Некорректно работает POST запрос

Некорректно работает POST запрос
Я
   IVT_2009
 
27.02.20 - 09:13
Есть такой фрагмент кода , который отправляет POST запрос в маркировку табака

ид = "000";
    КлючСессии         = параметрыСеанса.мрТекущийТокенПодписи;
    //_сервер         = параметрыСеанса.мрТекущийКонтурМаркировки;
    _Сервер         = "int01.gismt.crpt.tech";
    строкаЗапроса     = "/api/v3/true-api/cises/list";
    соеденение         = Новый HTTPСоединение(_сервер, , , , , , Новый ЗащищенноеСоединениеOpenSSL);
    запрос             = Новый HTTPЗапрос(строкаЗапроса);
    запрос.АдресРесурса = строкаЗапроса;            
    //запрос.Заголовки.Вставить("Accept", "application/json");
    запрос.Заголовки.Вставить("Authorization", СтрШаблон("Bearer %1", параметрыСеанса.мрТекущийТокенПодписи));
    запрос.Заголовки.Вставить("Content-Length", стрДлина("?values=" + ид));
    запрос.Заголовки.Вставить("Content-Type", "application/json;charset=UTF-8");
    Запрос.УстановитьТелоИзСтроки("?values=" + ид);
    
    Попытка
        
        файлОтвет     = ПолучитьИмяВременногоФайла("json");
        ответ         = соеденение.ОтправитьДляОбработки(Запрос, файлОтвет);
        //ответ         = соеденение.Получить(запрос, файлОтвет);
        
    Исключение
        
        Сообщить(ОписаниеОшибки());
        Возврат "";
        
    КонецПопытки;

    возврат файлОтвет;


по документации должен быть такой запрос:

POST 01)00000046210654(21)oFTjHaM" target="_blank" rel="nofollow" class="extralink">https://int01.gismt.crpt.tech/api/v3/true-api/cises/list?values=000000462106549OOv1s0XzlzIFDjtcXJjz5cB&values=00000046210654QuHCUeP&values=(01)00000046210654(21)oFTjHaM
Accept: application/json
Authorization: Bearer <ТОКЕН>

я его делаю и получаю ошибку 400

//2.2. Код 400 При отсутствии обязательного параметра:
{
"error_message": "Отсутствует обязательный параметр: values"
}

что я делаю не так?
   НЕА123
 
1 - 27.02.20 - 09:25
может так
ид = """000""";
   IVT_2009
 
2 - 27.02.20 - 09:30
(1) не прокатило : {"error_message":"Отсутствует обязательный параметр: values"}

такое ощущение , что он не понимает что ему в теле передали
   IVT_2009
 
3 - 27.02.20 - 09:46
up
   palsergeich
 
4 - 27.02.20 - 10:14
Запрос.УстановитьТелоИзСтроки("?values=" + ид);
Вот это не так. Тело это не адресная строка
   IVT_2009
 
5 - 27.02.20 - 10:16
Вопрос тогда немного другой:
Есть строка запроса: https://int01.gismt.crpt.tech/api/v3/true-api/cises/list?values=000000462106549OOv1s0XzlzIFDjtcXJjz5cB

ресурс запроса это: строкаЗапроса = "/api/v3/true-api/cises/list"
или : строкаЗапроса = "/api/v3/true-api/cises/list?"
или : строкаЗапроса = "/api/v3/true-api/cises/list?values" 

что будет правильной строкой для подстановки в 

запрос             = Новый HTTPЗапрос(строкаЗапроса);
   palsergeich
 
6 - 27.02.20 - 10:18
api/v3/true-api/cises/list?values=000000462106549OOv1s0XzlzIFDjtcXJjz5cB - вот это будет строкой запроса
   IVT_2009
 
7 - 27.02.20 - 10:20
(6) запрос POST не GET , что тогда телом будет ?
   palsergeich
 
8 - 27.02.20 - 10:22
(7) Пустое тело в POST допускается.
   IVT_2009
 
9 - 27.02.20 - 10:24
Сделал , пишет Отсутствует обязательный параметр: values
   palsergeich
 
10 - 27.02.20 - 10:35
Открывай описание api
И смотри что должно быть в теле
   IVT_2009
 
11 - 27.02.20 - 11:01
В описании вот это: https://yadi.sk/i/r4v2bjBrMNn0hg
Вопрос еще в том , что на их стороне может что то не так работать, но это маловероятно.
Это какой то POST запрос , но как GET
   palsergeich
 
12 - 27.02.20 - 11:30
запрос.Заголовки.Вставить("Content-Length", стрДлина("?values=" + ид)); - не надо Это ошибка. 1с сама этот заголовок вставляет.
   IVT_2009
 
13 - 27.02.20 - 13:29
После двух дней танцев с бубном он заработал, вот текст функции:

&наСервере
функция запросУпаковокПоИд4(ид) ЭКСПОРТ
    
    КлючСессии         = параметрыСеанса.мрТекущийТокенПодписи;
    _Сервер         = "int01.gismt.crpt.tech";
    ПараметрыЗапроса = Новый Массив;
    ПараметрыЗапроса.Добавить(СтрШаблон("values=%1",ид));
    строкаЗапроса = СтрШаблон("/api/v3/true-api/cises/list?%1",СтрСоединить(ПараметрыЗапроса, "&"));
    
    соеденение         = Новый HTTPСоединение(_сервер, , , , , , Новый ЗащищенноеСоединениеOpenSSL); 
    запрос             = Новый HTTPЗапрос(строкаЗапроса);
    запрос.Заголовки.Вставить("Content-Type",   "application/json; charset=utf-8");    
    запрос.Заголовки.Вставить("Accept-Charset", "utf-8");

    
    Попытка
        
        файлОтвет     = ПолучитьИмяВременногоФайла("json");
        ответ         = соеденение.ОтправитьДляОбработки(Запрос, файлОтвет);
        //ответ         = соеденение.Получить(запрос, файлОтвет);

        
    Исключение
        
        Сообщить(ОписаниеОшибки());
        Возврат "";
        
    КонецПопытки;

    возврат файлОтвет;

        
конецФункции//запросУпаковокПоИд4
   palsergeich
 
14 - 27.02.20 - 16:30
(13) Гратц, чо

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.