Здравствуйте коллеги
Много лет использовали интернет магазин на битриксе и свою самописную обработку по загрузке-выгрузке данных из 1с 7.7 в него и наоборот. Все работало как часы.
Но вот битрикс внезапно скончался и прежде чем его реанимировать, решила я оглядеться вокруг - а что еще у нас есть для магазинов?
Наткнулась на InSales - внешне понравился, стала пробовать адаптировать свою старую обработку под него, благо объявлено что протокол обмена используется 1с-овский, стандартный, и столкнулась с неожиданной проблемой:
- во-первых обработка использовала v7plus для работы, а в нем нет https
Ну хорошо, перешла на WinHttp.WinHttpRequest.5.1 - и тут наткнулась на
- во-вторых, WinHttpRequest не хочет принимать заголовок "Cookie" для установки куки, полученной от сайта
Ну ладно, сервер в качестве разделителя строк использует только "\n" - это можно пережить
Теперь, мне надо по феншую засунуть "exchange_session=*****************************************" в куку
Я пыталась:
В общем, вроде удалось обойти проблему - передаю с каждым запросом имя и пароль (печеньку тоже пытаюсь засунуть в заголовок, но не уверена что получается):
Именно оба действия - передача логина и пароля с каждым обращением и установка печеньки в заголовке привела к решению вопроса.
В общем, вроде удалось обойти проблему - передаю с каждым запросом имя и пароль (печеньку тоже пытаюсь засунуть в заголовок, но не уверена что получается):
//Соединение = СоздатьОбъект("msxml2.serverxmlhttp.6.0");
Соединение = СоздатьОбъект("winhttp.winhttprequest.5.1");
Функция ПолучитьДанные(Соединение, Операция)
Если ТипЗначенияСтр(Соединение) = "OLE.IServerXMLHTTPRequest2" Тогда
Соединение.Open("GET", ПараметрыЗапроса.АдресСервера + "?type=" + ПараметрыЗапроса.ТипЗапроса + "&mode=" + Операция, 0, ПараметрыЗапроса.ИмяПользователя, ПараметрыЗапроса.ПарольПользователя);
ИначеЕсли ТипЗначенияСтр(Соединение) = "OLE.IWinHttpRequest" Тогда
Соединение.Open("GET", ПараметрыЗапроса.АдресСервера + "?type=" + ПараметрыЗапроса.ТипЗапроса + "&mode=" + Операция, 0);
Соединение.SetCredentials(ПараметрыЗапроса.ИмяПользователя, ПараметрыЗапроса.ПарольПользователя, 0);
КонецЕсли;
Если ПустоеЗначение(ПараметрыЗапроса.Печенька) = 0 Тогда
Соединение.SetRequestHeader("Cookie", ПараметрыЗапроса.Печенька);
КонецЕсли;
Соединение.Send("");
Если Соединение.Status <> 200 Тогда
глСервис.ИконкаПредупреждения(1,1,);
Предупреждение(Строка(Соединение.Status) + РазделительСтрок + Соединение.statusText);
глСервис.ИконкаПредупреждения(1,,1);
Возврат 0;
КонецЕсли;
Возврат 1;
КонецФункции
Показать
Код постепенно оптимизируется, так что не удивляйтесь
Теперь другая проблема - не могу получить файл :(
В общем, вроде удалось обойти проблему - передаю с каждым запросом имя и пароль (печеньку тоже пытаюсь засунуть в заголовок, но не уверена что получается):
Именно оба действия - передача логина и пароля с каждым обращением и установка печеньки в заголовке привела к решению вопроса.