Имя: Пароль:
1C
1C 7.7
v7: Post Отправка xml через Api тело файла
0 MegaNoise
 
17.06.24
13:13
Подскажите пожалуйста, что не так ...
файл приходит на сервер но в теле файла (содержимое)> "OLE"
https://paste1c.ru/2fsvuotqj6bc (ссылка на код)

// *****************
ПолноеИмяФайла = "F:\send.xml"
XML_DOM=CreateObject("MSXML2.DOMDocument.6.0");
Header = XML_DOM.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""" );
XML_DOM.Load(ПолноеИмяФайла);
    
Url = "https://merchant-api...";        
    
ПолноеИмяФайла = "/" + ПолноеИмяФайла;
ПолноеИмяФайла = СтрЗаменить(ПолноеИмяФайла,"\","/");

Если СтрДлина(Токен) > 0 тогда      
WinHttp = СоздатьОбъект("MSXML2.XMLHTTP");
Boundary = "--WebKitFormBoundary7MA4YWxkTrZu0gW";        
Запрос = "--" + Boundary + "
|Content-Disposition: form-data; name=""form""; filename="+Симв(34)+ПолноеИмяФайла+Симв(34)+"        
|Content-Type: text/xml;" + РазделительСтрок + "    
|" + XML_DOM + "        
|--" + Boundary + "--";
        
WinHttp.Open("POST", URL, 0);        
WinHttp.setRequestHeader("Content-Charset", "utf-8");        
WinHttp.SetRequestHeader("Content-Type","multipart/form-data; boundary=" + Boundary);
WinHttp.setRequestHeader("Authorization", "Bearer "+Токен);
WinHttp.SetRequestHeader("Content-Length", СтрДлина(Запрос));
WinHttp.Send(Запрос);

КонецЕсли;
1 arsik
 
17.06.24
13:15
так XML_DOM у тебя оле объект. Тебе наверно туда просто ссылку на файл передавать надо
2 trad
 
17.06.24
13:18
(0) конкретно по этому коду:
|" + XML_DOM.text + "

Но будут проблемы если строка превысит Nсот кбайт
3 trad
 
17.06.24
13:22
Попробуй отправлять непосредственно дом-документ как application/xml, а не как форму

WinHttp.Open("POST", URL, 0);        
WinHttp.setRequestHeader("Content-Charset", "utf-8");        
WinHttp.SetRequestHeader("Content-Type","application/xml");
WinHttp.setRequestHeader("Authorization", "Bearer "+Токен);
WinHttp.Send(XML_DOM);