Имя: Пароль:
1C
1С v8
Использование WinHTTP для отправки файла методом POST по https
,
0 roman2
 
21.05.12
14:15
Бъюсь над вопросом 3-й день. Задача для меня очень важная.
Суть.
Нужно отправить на Web-сервис данные. Пробовал использовать HTTPСоединение - уперся в сертификат.
Забросил Соединение, решил использовать WinHTTP.
Опять вылезла ошибка с сертификатом.
Как отключить его обработку?

На данный момент код такой:

   WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
   WinHttp.Option(2,"Windows-1251");
   
   WinHttp.Open("POST","https://77.75.168.197:8008/WebServices/WebApi.asmx",0);
   
   WinHttp.SetRequestHeader("Accept-Language", "ru");
   WinHttp.SetRequestHeader("Accept-Charset","Windows-1251");
   WinHttp.setRequestHeader("Content-Language", "ru");
   WinHttp.setRequestHeader("Content-Charset", "Windows-1251");
   WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=Windows-1251");
   
   ПараметрыПОСТ = "fruit3=apple777";
   
   WinHttp.Send(ПараметрыПОСТ);
   
   Текст = Новый ЗаписьТекста("C:\temp\result.txt", КодировкаТекста.UTF8);
   Текст.ЗаписатьСтроку(WinHttp.ResponseText());
   Текст.Закрыть();

Буду очень благодарен решению!
1 smaharbA
 
21.05.12
14:26
Option
WINHTTP_OPTION_SECURITY_FLAGS
2 roman2
 
21.05.12
15:03
(1) Как это использовать в 1С? (Сори за идиотский вопрос)
3 chingiz
 
21.05.12
15:08
https это защищенный протокол. Пиши http.
4 chingiz
 
21.05.12
15:13
опции задаются через WinHttp.Option(,)
5 roman2
 
21.05.12
15:16
(4) а как передать параметр WINHTTP_OPTION_SECURITY_FLAGS?

так верно?
WinHttp.Option(WINHTTP_OPTION_SECURITY_FLAGS,false)
6 smaharbA
 
21.05.12
15:21
Option(4,13056)
7 smaharbA
 
21.05.12
15:22
8 roman2
 
21.05.12
15:23
(6) ого))) а можно понять как так получилось? где описание соответсвий числовых и символьных параметров?
9 smaharbA
 
21.05.12
15:25
set /a 0x100 + 0x200 + 0x1000 + 0x2000

WinHttpRequestOption_SslErrorIgnoreFlags

   Sets or retrieves a VARIANT that indicates which server certificate errors should be ignored. This can be a combination of one or more of the following flags.
   Error    Value
   Unknown certification authority (CA) or untrusted root    0x0100
   Wrong usage    0x0200
   Invalid common name (CN)    0x1000
   Invalid date or certificate expired    0x2000

   

   The default value of this option in Version 5.1 of WinHTTP is zero, which results in no errors being ignored. In earlier versions of WinHTTP, the default setting was 0x3300, which resulted in all server certificate errors being ignored by default.
10 smaharbA
 
21.05.12
15:26
или

set /a 0x3300
11 chingiz
 
21.05.12
15:28
Вообще эта опция тебе не нужна, попробуй например это, все работает.

WinHttp= Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
   WinHttp.Option(2,"Windows-1251");                  
   WinHttp.Open("POST","http://ya.ru",0);
   WinHttp.Send();
   
   Ответ=ПолучитьИмяВременногоФайла();
   Файлоответ = Новый ТекстовыйДокумент() ;      
   Файлоответ.УстановитьТекст(WinHttp.responsetext);
   Файлоответ.Показать();

   Сообщить(WinHttp.Status);
12 roman2
 
21.05.12
15:39
(11) у меня же SSL передача, требующая сертификата. Где здесь про сертификат?
13 chingiz
 
21.05.12
15:48
Дак ты же избавляешься от шифрования? ssl передача, но без сертификата, это как?
14 chingiz
 
21.05.12
15:49
WinHttp.Open("POST","http.... второй раз повторяю 8)
15 smaharbA
 
21.05.12
15:50
(13) Вы о чем ?
16 smaharbA
 
21.05.12
15:50
еще один потомок атиллы
17 roman2
 
21.05.12
15:55
(10) спасибо! буду пробовать.
18 sapphire
 
21.05.12
17:35
(0) А установить сертификат религия не позволяет?
19 oleg_km
 
21.05.12
17:53
(18) Я так понял урл в сертификате и урл в Open не совпадают (такой вот сервер). Допустим в сертификате online.psbank.ru, а урл filias.psbank.ru (ВСЕ СОВПАДЕНИЯ СЛУЧАЙНЫ). По-умолчанию Windows ругается. Чтобы Windows не ругалась, нужно ей сказать: не ругайся

Error Value
Unknown certification authority (CA) or untrusted root 0x0100
Wrong usage 0x0200
Invalid common name (CN) 0x1000    // Вот именно эту опцию и нужно взвести
Invalid date or certificate expired 0x2000

Ну вроде уже все разжевали.
20 mistеr
 
21.05.12
18:16
(0) Ты во всем так торопишься? В первой теме объяснил, из-за чего твоя ошибка.
21 roman2
 
21.05.12
19:19
(20) спасибо мил человек за аргументированный ответ в первой теме.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн