Имя: Пароль:
1C
 
Как отправить XML методом POST
1 GreyMen
 
09.11.10
16:33
Всем здрасте!
Подскажите, как отправить XML методом POST по HTTPS, если на сервере кривой сертификат? Ну ооооочень надо!
Желательно из 7.7 но и на 8-ке тоже пойдет.
Пробовал через MSXML2.ServerXMLHTTP.4.0, через WinHttp.WinHttpRequest.5.1, через HTTPСоединение в 8-ке, все отказывается работать из-за сертификата.
единственное, что почти взлетело – это через InternetExplorer.Application методом IE.Navigate("https://test...тут написан нужный адрес.......",,,ПараметрыПОСТ);  но ему в качестве ПараметрыПОСТ надо передать массив байт а не строку.
Может есть у кого-нить мысли на этот счет?
2 v_rtex
 
09.11.10
16:35
передай массив
3 GreyMen
 
09.11.10
16:36
(2) как сделать байтовый массив из строки?
4 smaharbA
 
09.11.10
16:37
оберни для 77
5 GreyMen
 
09.11.10
16:39
(4) Что имеется ввиду?
6 smaharbA
 
09.11.10
16:40
обертка
7 GreyMen
 
09.11.10
16:42
(6) логично, кэп )) как обернуть-то?
8 smaharbA
 
09.11.10
16:43
MSScriptControl
9 GreyMen
 
09.11.10
17:19
(8) Скажи, я на верном пути?
ПараметрыПОСТ = "<?xml version=""1.0"" encoding=""utf-8""?><request><operation>get_incremental_update</operation><last_update_time>0000-00-00 00:00:00</last_update_time></request>";
   IE = СоздатьОбъект("InternetExplorer.Application");
   IE.Silent = 1;

   
   MSScriptControl = СоздатьОбъект("MSScriptControl.ScriptControl");
   MSScriptControl.Language = "javascript";
   
   ДанныеМассива = "new Array(";
   Для к = 1 По СтрДлина(ПараметрыПОСТ) Цикл
       Если к = 1 Тогда
           ДанныеМассива = ДанныеМассива + "'" +Сред(ПараметрыПОСТ,к,1) + "'";
       Иначе
           ДанныеМассива = ДанныеМассива + ","+ "'" +Сред(ПараметрыПОСТ,к,1) + "'";
       КонецЕсли;
   КонецЦикла;
   ДанныеМассива = ДанныеМассива + ")";
   Массив = MSScriptControl.Eval(ДанныеМассива);

   IE.Navigate("https://test.........",,,Массив);

Судя по всему не верной, ибо в ответ говорится мне что мой XML не валидный....
10 smaharbA
 
09.11.10
17:50
в джабе не просто создать байтовый массив, в васике просче
11 smaharbA
 
09.11.10
17:50
и в массив закидывать не символы, а байты
12 GreyMen
 
10.11.10
09:26
(11) если не сложно, чиркани пару строк, как это должно выглядеть
13 GreyMen
 
10.11.10
11:19
Знатоки VBA, подскажите, как из одинэсной строки сделать массив байт, что б потом можно было его передать как параметр
14 smaharbA
 
10.11.10
11:32
если просче то
ADODB.Stream
15 smaharbA
 
10.11.10
11:48
Если посимвольно, примерно так (читаем Описание ошибки)

//*******************************************
Процедура Сформировать()
   Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
   Скрипт.Language="vbscript";
   Скрипт.AddCode("class [Класс]
       |    Dim [Массив]()
       |    Public Function [МассивБайт]([Стр])
       |        Redim [Массив](0)
       |        For [Сч]=1 To Len([Стр])
       |            Redim Preserve [Массив](Ubound([Массив])+1)
       |            [Массив](Ubound([Массив])-1)=Asc(Mid([Стр],[Сч]))
       |        Next
       |        [МассивБайт]=Ubound([Массив])
       |    End Function
       |End class
       |");
   Класс=Скрипт.Eval("new [Класс]");
   Сообщить(Класс.МассивБайт("Массив Байт"));
   Попытка
       Массив=Класс.Массив;
   Исключение
       Сообщить("А это намек, что дальше делать (и с ADODB.Stream в том числе)
       |---> "+ОписаниеОшибки(),"!!!");
   КонецПопытки;
КонецПроцедуры
Независимо от того, куда вы едете — это в гору и против ветра!