Версия для печати темы (https://pro1c.org.ua/index.php?s=9321fa4156806ec30b07356c3a36a0a2&showtopic=53284)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ отправка xml на веб сервер

Автор: duh_si 29.07.19, 9:18

Доброго времени суток.
проблема с отправкой xml файла на сервер
пытался так:

//Входные данные
    АдресСервиса = "training.atrucks.su"; //Адрес сервиса,
    АдресРесурса = "https://training.atrucks.su/api/v3/customer/create_order"; //Адрес по которому располагается ресурс api,
    ЗаказXML = "C:\Users\Desktop\atrucks-order\trucks_order_200619042.xml"; //Путь к файлу
    //создания заказа который необходимо передать  
                                    
    Boundary = "----" + "123e4567-e89b-12d3-a456-426655440000";//  УникальныйИдентификатор
    ФайлОтправки = СоздатьОбъект("Текст");
    //  //ФайлОтправки.ДобавитьСтроку(ИмяФайлаОтправки);

    //Массив для хранения и формирования файла который будет отправлен
    ТекстДляОтправки = "";
    ТекстДляОтправки = ТекстДляОтправки + "--"+Boundary+РазделительСтрок;
    //Параметр auth_key
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""auth_key""" + РазделительСтрок + РазделительСтрок;
    ТекстДляОтправки = ТекстДляОтправки + "I1F2HLcMHXebw9coyR4Bcu33ekez0gUv8Vjia8JvcKpDR" + РазделительСтрок;
    ТекстДляОтправки = ТекстДляОтправки + "--"+ Boundary + РазделительСтрок;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Disposition: form-data; name=""file""; filename=""trucks_order_200619042.xml""" + РазделительСтрок;
    ТекстДляОтправки = ТекстДляОтправки + "Content-Type: application/xml" + РазделительСтрок + РазделительСтрок;
    
    РазобратьФайл=СоздатьОбъект("Текст");
    РазобратьФайл.Открыть(ЗаказXML);
    Для стр=1 по РазобратьФайл.КоличествоСтрок() Цикл      
        ТекстДляОтправки = ТекстДляОтправки + РазобратьФайл.ПолучитьСтроку(стр);        
    КонецЦикла;
    
    ТекстДляОтправки = ТекстДляОтправки + РазделительСтрок;
    ТекстДляОтправки = ТекстДляОтправки+"--"+Boundary+"--";

    ФайлОтправки.ДобавитьСтроку(ТекстДляОтправки);
    ФайлОтправки.Записать(ЗаказXML);

///А дальше тупик с отправкой
    Попытка
        HTTPxml =  СоздатьОбъект("MSXML2.xmlHttp.4.0");
    Исключение    
        Сообщить("Не удалось инициализировать Microsoft XML");
        СтатусВозврата(0);
    КонецПопытки;
    
    Попытка
        HTTPxml.Open("POST","http://training.atrucks.su:443/api/v3/customer/create_order",0);
    Исключение  
        Сообщить("Не удалось подключиться к: ");
        Возврат "";
    КонецПопытки;
    
    HTTPxml.setRequestHeader("Content-Type", "multipart/form-data; boundary="+Boundary);
    HTTPxml.SetRequestHeader("Connection", "keep-alive");
    
    //HTTPxml.setRequestHeader("Content-Length", СтрДлина(ПараметрыПОСТ));
    
    Попытка
        HTTPxml.Send(ЗаказXML);
    Исключение
        Сообщить(ОписаниеОшибки());        
    КонецПопытки;    
    
    ОтветСервера = HTTPxml.responseText;

    Если HTTPxml.Status = 200 Тогда
      Сообщить(HTTPxml.ResponseText);
    Иначе
      Сообщить("HTTP " + HTTPxml.Status + " " + HTTPxml.StatusText);
      
    КонецЕсли;


Собственно вопрос, как правильно сформировать запрос и отправить файл xml?

Автор: duh_si 04.09.19, 9:28

duh_si @ 29.07.19, 10:18 * ,
Доброго времени суток.
с отправкой запроса на сайт разобрался, все отправляет, но только на виндовс 7 и выше.
сейчас проблема с Виндовс ХР

Соединение = СоздатьОбъект("MSXML2.xmlHttp");//СоздатьОбъект("WinHttp.WinHttpRequest.5.1");

    Соединение.Open("POST",АдресРесурса, 0);
    Соединение.SetRequestHeader("Content-Type","multipart/form-data; boundary="+Boundary);
    Соединение.SetRequestHeader("Connection", "keep-alive");

    Попытка
        Соединение.Send(ДляОтправки);

        Ответ = Соединение.ResponseText();
        Статус = СокрЛП(Соединение.Status);
        Сообщить(Ответ +" "+ Статус);
        
    Исключение


при попытке отправки
Соединение.Send(ДляОтправки);
валиться с такой ошибкой
Ошибка: msxml3.dll: Системная ошибка: -2146697208.

в чем может быть причина?

duh_si @ Сегодня, 10:25 * ,

Автор: Vofka 04.09.19, 10:13

duh_si, возможно в 7 и выше библиотека версия msxml3.dll более новая.

Автор: Pepe 05.09.19, 9:48

Цитата(Vofka @ 04.09.19, 11:13) *
возможно в 7 и выше библиотека версия msxml3.dll более новая.

Работает только с четвертым парсером.

Автор: duh_si 10.09.19, 10:51

Pepe @ 05.09.19, 10:48 * ,
устанавливал 4 парсер , без изменений. а предыдущие версии нужно разрегистрировать?

Автор: Pepe 12.09.19, 9:31

Цитата(duh_si @ 10.09.19, 11:51) *
устанавливал 4 парсер , без изменений. а предыдущие версии нужно разрегистрировать?

Нет, не надо. Ошибка таже?

Автор: duh_si 12.09.19, 9:48

Pepe @ Сегодня, 10:31 * ,
да, такая ошибка

Автор: Pepe 13.09.19, 9:55

duh_si, тогда ИМХО проблема в системе. Есть возможность проверить на другой оси?
Возможно не принимает сервер (возвращает ошибку).

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua