|   |   | 
| 
 | v7: Отправка xml post запросом | ☑ | ||
|---|---|---|---|---|
| 0
    
        Slim747 06.06.18✎ 15:32 | 
        Каким образом при помощи winhttp winhttprequest 5.1 отправить файл .xml на веб-сервер? Информация по отправке методом post есть, но нигде не пишут как прикрепить файл. Если кто сталкивался с проблемой, подскажите куда следует копать.
 Наверное тема не новая, но информации для решения проблемы так и не нашел. | |||
| 1
    
        trad 06.06.18✎ 15:37 | 
        я делаю примерно так
 ДокXML = СоздатьОбъект("Msxml2.DOMDocument"); ДокXML.appendChild(ДокXML.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")); ДокXML.createElement("элемент"); //и т.д. Запрос = СоздатьОбъект("Msxml2.ServerXMLHTTP"); Запрос.open("POST", url, 0); Запрос.setRequestHeader("Content-Type", "text/xml; charset=UTF-8"); //прочие заголовки Запрос.send(ДокXML); Если Запрос.status = 200 Тогда Ответ = Запрос.responseXML; //Ответ.save("файл.xml"); Результат = Ответ.selectSingleNode("//Result"); Иначе ТекстОшибки = "Ошибка: " + Запрос.status + " : " + Запрос.statusText; Сообщить(ТекстОшибки); КонецЕсли; | |||
| 2
    
        Slim747 06.06.18✎ 15:47 | 
        Насколько я понял, в свойстве объекта ДокXML должна быть запись пути нахождения файла .xml?     | |||
| 3
    
        arsik гуру 06.06.18✎ 15:53 | 
        (2) Это объект. Просто загрузи в этот объект свой xml/     | |||
| 4
    
        Ёпрст гуру 06.06.18✎ 15:54 | 
        (2) просто отправляй текст и всё.. т.е в send пихай текст xml     | |||
| 5
    
        arsik гуру 06.06.18✎ 15:55 | 
        + (3) Типа 
 ДокXML = СоздатьОбъект("Msxml2.DOMDocument");
 | |||
| 6
    
        big 06.06.18✎ 17:58 | 
        (0) Принципиально использовать WinHTTP? Гораздо шустрее работает cUrl.     | |||
| 7
    
        trad 06.06.18✎ 18:12 | 
        (4) при больших объемах семера будет падать     | |||
| 8
    
        trad 06.06.18✎ 18:23 | 
        (2) ДокXML - объект, в него ты можешь загрузить файл методом load, загрузить строку методом loadxml, наполнить руками, создавая и вставляя элементы и атрибуты.
 Описание - на сайте MS Метод send объекта xmlhttp умеет принимать как строку (но у семёрки тут проблемы на больших объемах), так и объект с интерфейсом домдокумента | |||
| 9
    
        Slim747 07.06.18✎ 10:40 | 
        Всё получилось!
 Использовал Msxml2.DOMDocument и Msxml2.ServerXMLHTTP. Информация на вебсервере появилась все гуд! Всем огромное спасибо! Наверное это единственное место где можно получить подсказку для дальнейших действий. | |||
| 10
    
        Slim747 12.06.18✎ 13:41 | 
        Рано радовался(:
 Какая то косячина! В статусе пишет ОК. А на сервисе не появляется. Может на самом сервисе косяк. Код прилагаю Процедура ОтправитьPOST() Перем url; СформироватьХМЛ(); Сформировать(); ДокXML = СоздатьОбъект("Msxml2.DOMDocument"); ДокXML.Load("C:\партии сырья.xml"); url = "http://corp.ids.by:81/trace/services/TraceabilityPr.svc/insertTraceabilitySyr?action=1&requestGuid="+ГУИД+"&isinsert=0"; Запрос = СоздатьОбъект("Msxml2.ServerXMLHTTP"); Запрос.open("POST", url, 0); Запрос.setRequestHeader("Content-Type", "text/xml; charset=UTF-8"); Запрос.setRequestHeader("AuthToken",Ответ); Запрос.send(ДокXML); Если Запрос.status = 200 Тогда Ответ = Запрос.responseXML; // Результат = Ответ.selectSingleNode("//Result"); Сообщить(Запрос.status); Сообщить(Запрос.statusText); Иначе ТекстОшибки = "Ошибка: " + Запрос.status + " : " + Запрос.statusText; Сообщить(ТекстОшибки); КонецЕсли; КонецПроцедуры | |||
| 11
    
        Slim747 12.06.18✎ 14:15 | 
        Метод ДокXML.Load("C:\партии сырья.xml"); возвращает -1.     | |||
| 12
    
        trad 13.06.18✎ 10:03 | 
        Если ДокXML.parseError.errorCode <> 0 Тогда
 Сообщить("Ошибка разбора " + ДокXML.parseError.reason); Иначе Сообщить("Нет ошибок разбора"); КонецЕсли; | |||
| 13
    
        Slim747 13.06.18✎ 11:27 | 
        Разобрался.
 Скривил немного файл xml который прописывал в метод Load. Сам код работает безупречно. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |