Помогите понять, почему код не рабочий

1. user1786138 12.04.24 09:19 Сейчас в теме
Создаю Json, отправляю по ссылке и он в любом случае выдает ошибку с кодом 422. Даже если ключ кривой прописать, он не даст 403. Может я не правильно пытаюсь достучаться по ссылке? Прикреплю файл, может там найдете причину.

Процедура Отправить(Команда)
    
    // Создать структуру с данными.
    Данные = Новый Структура;
    Данные.Вставить("objectId", "ce0dec40-5f72-447c-9d5e-abe4bebffdaa");
    Данные.Вставить("accessKey", "cf8f960c-b645-11ec-b909-0242ac120002");

    // Добавить элемент структуры МассивВесы типа Массив.
    МассивВесы = Новый Массив; 

    ДанныеВН = Новый Структура;
    ДанныеВН.Вставить("id","0cd20dea-7b97-4592-b047-494c6615bc3d"); //Обязательное   УИДОперации      c876210a-ccec-454d-8b1d-6d5064a8d109
    ДанныеВН.Вставить("dateBefore", "2024-04-11 01:30:43.497247");         //Обязательное
    ДанныеВН.Вставить("dateAfter", "2024-04-11 01:40:36.497247");
    ДанныеВН.Вставить("registrationNumber", "МК-1552-13 О897ТУ62 (Спецпромсервис)");           //Обязательное
    ДанныеВН.Вставить("garbageTruckType", "");
    ДанныеВН.Вставить("garbageTruckBrand", "");
    ДанныеВН.Вставить("garbageTruckModel", "");
    ДанныеВН.Вставить("companyName", "К-СК Дягилево");
    ДанныеВН.Вставить( "companyInn", "");
    ДанныеВН.Вставить("companyKpp", "");
    ДанныеВН.Вставить("weightBefore", "8980");                     //Обязательное
    ДанныеВН.Вставить( "weightAfter", "6030");                     //Обязательное
    ДанныеВН.Вставить( "weightDriver", "");
    ДанныеВН.Вставить("coefficient", "");
    ДанныеВН.Вставить("garbageWeight", "");
    ДанныеВН.Вставить("garbageType", "");
    ДанныеВН.Вставить("codeFKKO", ""); 
    ДанныеВН.Вставить("nameFKKO", ""); 

    МассивВесы.Добавить(ДанныеВН);

    Данные.Вставить("weightControls", МассивВесы); 

    // Создать объект записи и открыть файл, в который будет выполняться запись.
    ЗаписьФайлаJSON = Новый ЗаписьJSON;
    ПутьКФайлу = "C:\Users\dkukushkin\Desktop\Тест Json\Test.json";
    ЗаписьФайлаJSON.ОткрытьФайл(ПутьКФайлу);
    
    // Выполнить запись данных (Данные) с помощью объекта записи (Запись).
    ЗаписатьJSON(ЗаписьФайлаJSON, Данные);

    // Завершить работу с файлом.
    ЗаписьФайлаJSON.Закрыть(); 

    // Выполнение curl запроса через COM-объект MSXML2.XMLHTTP
    Запрос = Новый COMОбъект("MSXML2.XMLHTTP");
    Запрос.open("POST", "https://api.reo.ru/reo-weight-control-api/api/v1/weight-controls/import", Ложь);
    Запрос.setRequestHeader("Content-Type", "multipart/form-data");
    Запрос.setRequestHeader("accept", "*/*");
    Запрос.send("file=@" + ПутьКФайлу);

    // Получение ответа
    Ответ = Запрос.responseText;

    // Обработка ответа
    Если Запрос.Status = 200 Тогда
        Сообщить("Запрос успешно обработан");
    Иначе
        Если Запрос.Status = 403 Тогда
            Сообщить("Ограничение в доступе. Некорректный ключ доступа");
		Иначе
		    Если Запрос.Status = 422 Тогда
		        Сообщить("Ошибка валидации");
            Иначе
                Сообщить("Неизвестный код ответа: " + Строка(Запрос.Status));
            КонецЕсли;
        КонецЕсли;
	КонецЕсли;

    // Удаление временного файла
    Если НЕ Запрос.Status >= 400 Тогда
        Файл = Новый Файл(ПутьКФайлу);
        Если Файл.Существует() Тогда
            Файл.Удалить();
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
Показать
Прикрепленные файлы:
Инструкция_для_подключения_интеграции_по_весовому_контролю.pdf
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 12.04.24 09:53 Сейчас в теме
(1)
Запрос.setRequestHeader("Content-Type", "multipart/form-data");

а в тело передаете просто json.

Или сменить Content-Type, или формировать тело согласно формату multipart/form-data.
3. user1786138 12.04.24 11:56 Сейчас в теме
(2)
формату multipart/form-data.
Спасибо, вот поменял, но выдает ошибку 415
 &НаКлиенте
Процедура Отправить(Команда)
    
    // Создать структуру с данными.
    Данные = Новый Структура;
    Данные.Вставить("objectId", "ce0dec40-5f72-447c-9d5e-abe4bebffdaa");
    Данные.Вставить("accessKey", "cf8f960c-b645-11ec-b909-0242ac120002");

    // Добавить элемент структуры МассивВесы типа Массив.
    МассивВесы = Новый Массив; 

    ДанныеВН = Новый Структура;
    ДанныеВН.Вставить("id","0cd20dea-7b97-4592-b047-494c6615bc3d"); //Обязательное   УИДОперации      c876210a-ccec-454d-8b1d-6d5064a8d109
    ДанныеВН.Вставить("dateBefore", "2024-04-11 01:30:43.497247");         //Обязательное
    ДанныеВН.Вставить("dateAfter", "2024-04-11 01:40:36.497247");
    ДанныеВН.Вставить("registrationNumber", "МК-1552-13 О897ТУ62 (Спецпромсервис)");           //Обязательное
    ДанныеВН.Вставить("garbageTruckType", "");
    ДанныеВН.Вставить("garbageTruckBrand", "");
    ДанныеВН.Вставить("garbageTruckModel", "");
    ДанныеВН.Вставить("companyName", "К-СК Дягилево");
    ДанныеВН.Вставить( "companyInn", "6234139457");
    ДанныеВН.Вставить("companyKpp", "");
    ДанныеВН.Вставить("weightBefore", "8980");                     //Обязательное
    ДанныеВН.Вставить( "weightAfter", "6030");                     //Обязательное
    ДанныеВН.Вставить( "weightDriver", "");
    ДанныеВН.Вставить("coefficient", "1");
    ДанныеВН.Вставить("garbageWeight", "2950");
    ДанныеВН.Вставить("garbageType", "");
    ДанныеВН.Вставить("codeFKKO", ""); 
    ДанныеВН.Вставить("nameFKKO", ""); 

    МассивВесы.Добавить(ДанныеВН);

    Данные.Вставить("weightControls", МассивВесы); 

    // Преобразовать структуру в JSON строку.
    СтрокаДанных = Строка(Данные);

    // Создать объект запроса и отправить данные.
    Запрос = Новый COMОбъект("MSXML2.XMLHTTP");
    Запрос.open("POST", "https://api.reo.ru/reo-weight-control-api/api/v1/weight-controls/import", Ложь);
    Запрос.setRequestHeader("Content-Type", "application/json");
    Запрос.setRequestHeader("accept", "*/*");
    Запрос.send(СтрокаДанных);

    // Получение ответа
    Ответ = Запрос.responseText;

    // Обработка ответа
    Если Запрос.Status = 200 Тогда
        Сообщить("Запрос успешно обработан");
    Иначе
        Если Запрос.Status = 403 Тогда
            Сообщить("Ограничение в доступе. Некорректный ключ доступа");
        Иначе
            Если Запрос.Status = 422 Тогда
                Сообщить("Ошибка валидации");
            Иначе
                Сообщить("Неизвестный код ответа: " + Строка(Запрос.Status));
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры
Показать
4. ELbailador 12.04.24 13:12 Сейчас в теме
(3)Не вижу в этом коде создания json.
5. Sashares 35 12.04.24 14:01 Сейчас в теме
(3) Поддержку (4) - в переменной СтрокаДанных у вас значение "Структура" =))
Установите Fiddler - сможете смотреть что реально отправляется.
6. spacecraft 12.04.24 14:08 Сейчас в теме
(3) помимо озвученного неправильного получения json (зачем изменили? ), ошибка 415 говорит о том, что формат application/json не поддерживается удаленным сервисом.

Придется формировать в формате multipart/form-data.
Там не сложно.
7. user1786138 12.04.24 15:02 Сейчас в теме
(6) Придется формировать в формате multipart/form-data. Соглашусь в инструкции было прописано, что нужно использовать формат multipart/form-data.
Я просто вообще ни разу не сталкивался не с формированием не json, не с формирование через формат multipart/form-data.
8. ELbailador 12.04.24 18:42 Сейчас в теме
(7) Ну так хотя бы выложи как и в каком формате нужно отправить
10. user1786138 15.04.24 10:17 Сейчас в теме
(8) в (1) там в прикрепленном файле вся задача грубо говоря. А дальше как я пытался реализовать ее.
9. ELbailador 12.04.24 20:59 Сейчас в теме
Оставьте свое сообщение

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