Имя: Пароль:
1C
1C 7.7
v7: API > Mail Agent
,
0 MegaNoise
 
01.01.24
20:04
Такая история:
под обычной OS код работает ( т.е. отправляет в mail агент в бота сообщения )
RDP Server 2018 напрочь отказывается это делать

HTTPxml.Send();
msxml3.dll: Ошибка поддержки безопасных каналов

Подскажите пожалуйста как решить ?

ТекстСообщения    = "Проверка";
    ТипЗапроса = "GET";        

    URL = "https://api.icq.net/bot/v1//messages/sendText?token=003.3439444656.2186202793:1011458761&chatId=AoLM7ppPzpDWJYEdTQ4&text=" + ТекстСообщения;
    HTTPxml = СоздатьОбъект("Msxml2.ServerXMLHTTP");
    HTTPxml.Open(ТипЗапроса, URL, 0);
    HTTPxml.Send();
1 MegaNoise
 
01.01.24
20:10
св-ва Браузер :
SSL 2.0 = Вкл
Использовать TLS1.2 = Вкл
2 MWWRuza
 
гуру
01.01.24
21:29
(0) Карлик Вам в помощь :-)
ВК curl1c.dll. Переделать запросы с MS_XML_HTTP на нее - проблем не составит, по сути даже ничего менять не придется, только другой объект создаете. Но, должна работать под любой виндой. С httpS там проблем нет.
По крайней мере, попробовать ничего не мешает, с минимальными переделками кода.
3 MegaNoise
 
02.01.24
18:49
Более простое решение было таким:
OS =  Server 2008r2
Идём https://curl.se/windows/
берем от туда Curl согласно разрядности и кидаем в System32
4 MWWRuza
 
гуру
02.01.24
22:58
(3) Ну, можно конечно и так... Но, насчет "простоты", я сомневаюсь.. Под curl нужно в полностью переделывать код, запускать curl через "КомандаСистемы", или "ЗапуститьПриложение", а с ВК достаточно ее загрузить и объект создать, дальше все как с MS запросами... Тем более, Ваш вариант запроса, без тела...
А... Ну, если нужно не только статус выполнения получать, а и тело ответа, то там через Приемник.Данные делается... Хоть файл, хоть строка, Тип в Приемнике задается.
5 big
 
03.01.24
21:53
(0) А в "обычной ОС" какой msxml работает? Тоже 3-ей версии?  Это очень древняя штуковина, может поискать способ создать объект 6-ой версии? Что типа "Msxml2.DOMDocument.6.0"
6 MegaNoise
 
04.01.24
14:48
// Хорошо, пробуем карликом    
// Задача: отправить на МаилАгентБота Сообщение ..    
    
URL = "https://api.icq.net/bot/v1//messages/sendText?token=003.3439444656.2186202793:1011458761&chatId=AoLM7ppPzpDWJYEdTQ4&text=Сообщение";    
    
Если ЗагрузитьВнешнююКомпоненту("curl1c.dll") = 1 Тогда
    Карлик = СоздатьОбъект("Карлик");    
Сообщить("Компонента загружена", "!");
Иначе    
        Сообщить("Компонента curl1c.dll не загружена","!");
КонецЕсли;
    
Карлик.ВыводитьСостояние(0);
Карлик.Отладка(1);
Карлик.Трассировка(0);
Карлик.УстановитьПараметр("TIMEOUT",30);
Карлик.УстановитьПараметр("URL", URL);//    
Карлик.УстановитьПараметр("CUSTOMREQUEST", "GET");
Карлик.Приемник.Тип     = 0;
Карлик.УстановитьПараметр("HTTPHEADER", "cache-control" + ": "+ "no-cache");
Карлик.Источник.Тип    = 0;
Карлик.Выполнить();    
    
// Документации по карлику нет
// Что-то Выполняется но реакции нет ( что не так ? )
7 MegaNoise
 
04.01.24
15:13
Есть ли у Карлика ограничения по длине URL ?
// Максимальная длина указателя ресурсов (URL-адреса) в Microsoft Internet Explorer составляет 2083 символа
8 MWWRuza
 
гуру
04.01.24
16:19
После "Выполнить()", что у Вас в Карлик.Приемник.Данные - ?
9 MWWRuza
 
гуру
04.01.24
16:31
+ к (8) и, Выполнить() - это функция.
т.е., нужно: РезЗапр = Карлик.Выполнить();
Что будет в РезЗапр - ??? Статус 200 если все ОК, или код ошибки, если что-то не так...
10 MWWRuza
 
гуру
04.01.24
16:30
(6)// Документации по карлику нет

Документация - текстовик с описанием отличий, в принципе там все есть. Ну и ДемоОбработка. Там немного запутано, но можно разобраться.

Насчет длины URL, ничего не скажу - это к автору, к Djelf...
11 Djelf
 
04.01.24
16:36
(10) Это я не знаю, это вопрос к libcurl, у меня ограничений нет.
Ну демо-обработка слегка запутанная, есть такое немного, а как другую сделать? Предложи...
12 MWWRuza
 
гуру
04.01.24
17:29
(11) Предложи...

Да нормально, все там можно разобраться, особенно с текстовиком по отличиям - по сути, там не только отличия, а и описание методов.
13 MegaNoise
 
04.01.24
18:09
(9) РезЗапрос очень длинный

Это конец
0000: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload    
<= Recv header, 2 bytes (0x2)    
0000:    
<= Recv data, 54 bytes (0x36)    
0000: {"ok": false, "description": "Invalid UTF-8 sequence"}    
== Info, Connection #0 to host api.icq.net left intact    
200

Ответ 200
Может причина в "Invalid UTF-8 sequence"
14 MegaNoise
 
04.01.24
18:15
Лог карлика https://dropmefiles.com/aWa2q
15 MegaNoise
 
04.01.24
19:01
(8)
Источник.Тип = 0
Источник.Данные = ""
Источник.Кодировка = 0

Приемник.Тип = 0
Приемник.Данные = ""
Приемник.Кодировка = 0
16 MWWRuza
 
гуру
04.01.24
20:37
Ну, судя по тому, что у Вас запрос без тела, просто урл, источник можно не задавать.
А приемник? все зависит от того, что Вы хотите получить на выходе. Если просто строку, то Приемник.Данные тоже задавать не нужно - наоборот, после отработки запроса,  в Данных будет содержаться строка ответа(если Тип = 0). А если хотите получить файл - то тип должен быть 1, а в Приемник.Данные нужно указать путь и имя файла, куда его нужно сохранить.

Вот пример, я в соседней теме выкладывал:

Процедура Сформировать()
    Если ЗагрузитьВнешнююКомпоненту("curl1c.dll") = 1 Тогда
        Карлик = СоздатьОбъект("Карлик");    
    Сообщить("Компонента загружена", "!");
    Иначе    
            Сообщить("Компонента curl1c.dll не загружена","!");
    КонецЕсли;
    url = "https://markirovka.crpt.ru/api/v3/true-api/auth/key
    Карлик.ВыводитьСостояние(0);
    Карлик.Отладка(Отл);
    Карлик.Трассировка(Трасс);
    Карлик.УстановитьПараметр("TIMEOUT",30);
    Карлик.УстановитьПараметр("URL", url);  
    Карлик.УстановитьПараметр("CUSTOMREQUEST", "GET");
    Карлик.Приемник.Тип     = 0;
    Карлик.УстановитьПараметр("HTTPHEADER", "cache-control" + ": "+ "no-cache");
    Карлик.УстановитьПараметр("HTTPHEADER", "Accept" + ": "+ "application/json");
    Карлик.Источник.Тип    = 0;
    Рез = Карлик.Выполнить();
    Сообщить("Получена пара uuid + data: " + Карлик.Приемник.Данные);
КонецПроцедуры

Можете скачать: https://cloud.mail.ru/public/qmGh/DrWQGrw61
и у себя попробовать. И за одно протестите с загруженной ХМЛ, для статистики. Только на какой-нибудь "маленькой" базе, так, как если "упадет", то потом переиндексация.Или просто пустую базу создайте, работает и на пустой. Без загрузки ХМЛ не падает, можно на любой пробовать.