Имя: Пароль:
1C
1С v8
Проблема с отправкой на сайт xml файла Через HTTP соединение POST запросом
0 bagu_muslim
 
25.04.21
07:22
HTML пытаюсь отправить файл и вылетает следующая ошибка ошибка  " {"detail":"JSON parse error - Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)"}" код ошибки 400 Код приведен ниже.

        SSL=Новый ЗащищенноеСоединениеOpenSSL;
    Соединение = Новый HTTPСоединение(Объект.Адрес,,,,,,SSL);
    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/json;charset=utf-8");// пробовал менять контент тайп там еще гуще ошибки вылетают
    ЗаголовокHTTP.Вставить("Authorization","Bearer   "+Токен);
    Структура=ПолучитьСтруктуруДляXML();
    хмл=СформироватьXML(Структура);
    HTTPЗапрос = Новый HTTPЗапрос("/en/api/v1/shops/update-products-*****/",ЗаголовокHTTP);
    HTTPЗапрос.УстановитьИмяФайлаТела(хмл);
    HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
    ОтветВВидеСтроки = HTTPОтвет.ПолучитьТелоКакСтроку();
    Сообщить(HTTPОтвет.КодСостояния);
    Сообщить(ОтветВВидеСтроки);
1 ДенисЧ
 
25.04.21
07:25
Не раскрыта тема функции СформироватьXML()
Она что возвращает?
2 bagu_muslim
 
25.04.21
07:31
(1) путь к файлу
3 hhhh
 
25.04.21
07:37
(2) она вам насекает, что файл не utf-8
4 bagu_muslim
 
25.04.21
07:48
(3) В параметрах записи хмл прописан UTF 8
5 Вафель
 
25.04.21
07:59
Так даже в тексте ошибки указано что БОМ виноват
6 bagu_muslim
 
25.04.21
08:08
(5) Можно по подробнее?  как исправить?  ОтправитьДляОбработки в этой функции нету параметра BOM, знаю что в СтрокуКакТело есть пааметр обрабатывать BOM
7 hhhh
 
25.04.21
08:11
(4) ну и где тут эта записьXML ? Вы вообще какой-то другой кусок программы выложили, в котором ничего не увидишь.
8 bagu_muslim
 
25.04.21
08:13
(7) Функция СформироватьXML(хмл)
    
    КаталогXML = Строка("E:\XML\Файл.xml");
    ЗаписьXML = Новый ЗаписьXML;
    ПараметрыЗАписиХМЛ=Новый ПараметрыЗаписиXML("UTF-8", , Ложь);
    ЗаписьXML.ОткрытьФайл(КаталогXML);
    ЗаписьXML.ЗаписатьОбъявлениеXML();    
    ЗаписьXML.ЗаписатьНачалоЭлемента("Product");
    Для Каждого нмк Из хмл Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("Product");
        ЗаписьXML.ЗаписатьАтрибут("Price", нмк.Значение.Цена);
        ЗаписьXML.ЗаписатьАтрибут("Quantity", нмк.Значение.Количество);  
        ЗаписьXML.ЗаписатьАтрибут("Name", нмк.Значение.Наименование);
        ЗаписьXML.ЗаписатьКонецЭлемента(); // Номенклатура
    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента(); // Номенклатура
    ЗаписьXML.Закрыть();
    

Возврат  КаталогXML;
    
КОнецФункции
9 hhhh
 
25.04.21
08:28
(8) что-то фигня у вас тут. ПараметрыЗАписиХМЛ никак не привязано тут ни к чему, ни к какому файлу. Вы программист или где?
10 bagu_muslim
 
25.04.21
08:33
(9) Точняк, исправил код, сорян писал код ночью проглядел
следующий код ошибки 400  {"detail":"JSON parse error - Expecting value: line 1 column 1 (char 0)"} ))
11 Chameleon1980
 
25.04.21
08:38
(10) в темноте и с выключенным компьютером
12 hhhh
 
25.04.21
08:42
(10) ну тут у вас действительно явно не JSON. Просто xml файл подсовываете.
13 bagu_muslim
 
25.04.21
08:43
(11) Да типа того )
14 bagu_muslim
 
25.04.21
08:44
(12) А как правильно отправить файл не подскажите??
15 zmaximka
 
25.04.21
11:13
Сервер от вас ждет JSON а вы в него XML тыкаете
16 bagu_muslim
 
25.04.21
11:20
(15) нужно в самом апи изменения сделать?
17 hhhh
 
25.04.21
11:32
(16) ну делайте не ЗаписьXML, а ЗаписьJSON
18 Alex_
Alexsin_2020
 
03.05.21
14:27
и потом

ЗаписьXML.ЗаписатьНачалоЭлемента("Product");//два уровня с одинаковым? может здесь лучше указать Products?
    Для Каждого нмк Из хмл Цикл
        ЗаписьXML.ЗаписатьНачалоЭлемента("Product");
        ЗаписьXML.ЗаписатьАтрибут("Price", нмк.Значение.Цена);
        ЗаписьXML.ЗаписатьАтрибут("Quantity", нмк.Значение.Количество);  
        ЗаписьXML.ЗаписатьАтрибут("Name", нмк.Значение.Наименование);
        ЗаписьXML.ЗаписатьКонецЭлемента();// Номенклатура

    КонецЦикла;
    ЗаписьXML.ЗаписатьКонецЭлемента();// Номенклатура
Программист всегда исправляет последнюю ошибку.