|
С COMОбъект("MSXML2.XMLHTTP") на HTTPСоединение | ☑ | ||
|---|---|---|---|---|
|
0
Sevish
08.03.26
✎
08:04
|
Добрый день всем!
Не могу сообразить как переделать код этот на обычное HTTPСоединение(создание COM объекта глючит, иногда может создаваться и 20 минут, а иногда 0.5 сек). strЗапрос = " |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/ xmlns:plug=""http://plugins.operday.ERPIntegration.crystals.ru/ | <soapenv:Header/> | <soapenv:Body> | <plug:getZReportsByParams> | <dateOperDay>" + ДатаЗагрузкиЗ +" </dateOperDay> | <shopNumber>" + НомерМагазина + "</shopNumber> | </plug:getZReportsByParams> | </soapenv:Body> |</soapenv:Envelope>"; oXMLHTTP = Новый COMОбъект("MSXML2.XMLHTTP.6.0"); // << 08.03.2026 было так COMОбъект("MSXML2.XMLHTTP") вообще зависало, теперь хоть ошибка через 10-15 сек. oXMLHTTP.open("POST", АдресСервера, 0); oXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); oXMLHTTP.setRequestHeader("SOAPAction", АдресСервера); oXMLHTTP.send(strЗапрос); Проблема в том, что адрес запроса вот такой и не могу понять как его распарсить для HTTPСоединения. "http://192.168.9.4:8090/SET-ERPIntegration/FiscalInfoExport?getZReportsByOperDay |
|||
|
1
Мультук
гуру
08.03.26
✎
09:49
|
(0)
del |
|||
|
2
Chameleon1980
08.03.26
✎
09:03
|
(1) вот и я думаю с ком на ком
|
|||
|
3
Ёпрст
гуру
08.03.26
✎
09:03
|
(0) И ..в чем проблема то ? Запрос с пустыми заголовками, параметры в тело запроса.
Дока же есть: https://crystals.atlassian.net/wiki/spaces/INT/pages/2070904863/-+X+Z-+SetRetail10 |
|||
|
4
Мультук
гуру
08.03.26
✎
09:48
|
||||
|
5
Sevish
08.03.26
✎
10:13
|
(3) и (4) дело не в этом.
Соединение = Новый HTTPСоединение(<что сюда написать?>, 8090,,,,,); Запрос = Новый HTTPЗапрос(<что сюда написать?>); Ответ = Соединение.Получить(Запрос); Поток = Ответ.ПолучитьТелоКакПоток(); Кодировка = "utf-8"; А дальше что? В файл же надо записать. Вот в чем у меня проблема :( Просто HHTP POST умею отправлять, но тут есть вот "strЗапрос" и как его передать и есть "SET-ERPIntegration/FiscalInfoExport?getZReportsByOperDay" куда это вставлять? |
|||
|
6
Sevish
08.03.26
✎
11:14
|
Может кому-то пригодиться. Тут есть лишний код, но мне так удобнее для отладки.
СоединениеHTTP = Новый HTTPСоединение("192.168.9.4", 8090); ФайлЗапроса = КаталогЗагрузки + "\soapreq.txt"; ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.УстановитьТекст(strЗапрос); ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.ANSI); ФайлРезультата = КаталогЗагрузки + "\soapansw.xml"; ФайлОтправки = Новый Файл(ФайлЗапроса); РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер()); ЗаголовокHTTP = Новый Соответствие(); ЗаголовокHTTP.Вставить("Content-Length", РазмерФайлаОтправки); ЗаголовокHTTP.Вставить("Content-Type", "text/xml; charset=utf-8"); РезультатHTTP = СоединениеHTTP.ОтправитьДляОбработки(ФайлЗапроса, "/SET-ERPIntegration/FiscalInfoExport", ФайлРезультата, ЗаголовокHTTP); Если (РезультатHTTP.КодСостояния = 200) тогда ТекстовыйФайлОтвет = Новый ТекстовыйДокумент; ТекстовыйФайлОтвет.Прочитать(ФайлРезультата, КодировкаТекста.UTF8); СтрокаРезультат = ТекстовыйФайлОтвет.ПолучитьТекст(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(СтрокаРезультат); Пока ЧтениеXML.Прочитать() Цикл Если ((ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента) И (ЧтениеXML.Имя = "return")) Тогда ЧтениеXML.Прочитать(); Если (ЧтениеXML.ТипУзла = ТипУзлаXML.Текст) Тогда СодержимоеДляЗаписи = ЧтениеXML.Значение; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Отчеты_1 = Base64Значение(СодержимоеДляЗаписи); Отчеты_1.Записать(КаталогЗагрузки + "\zreport.xml"); Иначе СообщениеПользователю = Новый СообщениеПользователю; СообщениеПользователю.Текст = "Ошибка получения данных с сервера SetRetail!"; СообщениеПользователю.Сообщить(); Возврат Ложь; КонецЕсли; |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |