Имя: Пароль:
1C
1С v8
Отправка XML файла на URL
0 Shaman1C
 
07.02.17
14:17
Всем привет, подскажите, почему все время лезет ошибка 400, формирую XML файл, отправляю по адресу и ничего не получается, ошибка 400, что я сделал не так?




    //Получаем имя временного файла
    Путь = ПолучитьИмяВременногоФайла("XML");
    // Инициализируем класс "ЗаписьXML"
    Запись = Новый ЗаписьXML;
    //Открываем временный файл для записи
    Запись.ОткрытьФайл(Путь, "UTF-8");
    //Записываем объявление XML-файла
    Запись.ЗаписатьОбъявлениеXML();
    
    Запись.ЗаписатьНачалоЭлемента("scoreList");// Первый элемент
    Для Каждого Стр Из Результат Цикл
        Запись.ЗаписатьНачалоЭлемента("EmployeeScore");
            
            Запись.ЗаписатьНачалоЭлемента("DbSource");
            Запись.ЗаписатьТекст(Строка(СтрСоед));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("UserLogin");
            Запись.ЗаписатьТекст(Строка(Стр.Логин));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("Period");
            Запись.ЗаписатьТекст(Строка(Стр.Период));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("KPIName");
            Запись.ЗаписатьТекст(Строка(Стр.ПоказательSC));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("Measure");
            Запись.ЗаписатьТекст(Строка(Стр.ЕдиницаИзмерения));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("TypeOfPC");
            Запись.ЗаписатьТекст(Строка(Стр.ТипПВ));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("Weight");
            Запись.ЗаписатьТекст(Строка(Стр.Вес));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("Plan");
            Запись.ЗаписатьТекст(Строка(Стр.План));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("Fact");
            Запись.ЗаписатьТекст(Строка(Стр.Факт));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("PC");
            Запись.ЗаписатьТекст(Строка(Стр.ПВ));
            Запись.ЗаписатьКонецЭлемента();
            
            Запись.ЗаписатьНачалоЭлемента("Threshold");
            Запись.ЗаписатьТекст(Строка(Стр.Отсечение));
            Запись.ЗаписатьКонецЭлемента();
            
        Запись.ЗаписатьКонецЭлемента();//EmployeeScore
    КонецЦикла;
    Запись.ЗаписатьКонецЭлемента(); //scoreList
    СтрокаXML = Запись.Закрыть(); // Закрываем файл
    
    ДвоичныеДанные = Новый ДвоичныеДанные(Путь);
    Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Новый УникальныйИдентификатор);
    
    ЗаголовокЗапросаHTTP = Новый Соответствие;
    ЗаголовокЗапросаHTTP.Вставить("Content-Type",  "text/xml; charset=utf-8");
    ЗаголовокЗапросаHTTP.Вставить("Content-Length", ДвоичныеДанные.Размер());
    
    Попытка
        HTTPСоединение = Новый HTTPСоединение(ДОМЕН,,,,,,,Истина);
    Исключение
        Сообщить("Не удалось установить соединение с сервером онлайн-проверки:" + Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
        Возврат;
    КонецПопытки;
    
    // посылаем запрос
    Попытка
        HTTPЗапрос = Новый HTTPЗапрос(УРЛбезДомена, ЗаголовокЗапросаHTTP);
        HTTPЗапрос.УстановитьИмяФайлаТела(Путь);
        Результат  = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        Соединение = Неопределено;
        Если Результат.КодСостояния > 299 Тогда
            Сообщить("Код состояния " + Результат.КодСостояния + ". Проверка не выполнена");
        КонецЕсли;
    Исключение
        Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
    КонецПопытки;
1 mehfk
 
07.02.17
14:38
ДвоичныеДанные.Размер() - соответствует размеру файла?
2 mehfk
 
07.02.17
14:47
А еще есть (или наоборот нет) BOM :)
3 Shaman1C
 
07.02.17
15:36
Никто не знает?
4 Сергиус
 
07.02.17
16:24
Скорее всего проблема в заголовках.
5 Вафель
 
07.02.17
16:26
+100500 за BOM
6 Сергиус
 
08.02.17
00:10
(0)http://catalog.mista.ru/public/20017/

Как пример.
7 Torquader
 
08.02.17
00:19
Во-первых, для чего "Соединение=НЕОПРЕДЕЛЕНО"
Во-вторых, зачем вам "Использовать аутентификацию ОС" и как оно должно работать ?
8 Torquader
 
08.02.17
00:21
В строчке
HTTPСоединение = Новый HTTPСоединение(ДОМЕН,,,,,,,Истина);
Точно ИСТИНА - восьмой параметр - может вы хотели защищённое соединение - тогда нужно одну запятую стереть.
9 Shaman1C
 
08.02.17
14:29
(8) Пробовал и без Истины, пробовал по всякому, либо либо ошибка 500, либо 400.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший