Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Dafur Member Откуда: Сообщений: 28 |
Доброе время суток! Есть такая задача. Нужно на web-сервер скрипту методом POST передать данные. Используется протокол HTTPS. Нужно проигнорировать ошибки сертификата (недоверенный центр сертификации, несовпадение хоста с прописанном в сертификате и т.п.). Сделать это можно, установив опции WinHttpRequestOption_SslErrorIgnoreFlags соответствующие флаги. Подробнее в MSDN. Пытаюсь сделать так: declare @obj int, @ret int, @text varchar(max), @url varchar(max) select @url = 'https://host.ru/scrypt.aspx' exec @ret = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @obj out IF @ret <> 0 exec sp_OAGetErrorInfo @obj exec @ret = sp_OAMethod @obj, 'Open', NULL, 'POST', @url, 'false' IF @ret <> 0 exec sp_OAGetErrorInfo @obj exec @ret = sp_OASetProperty @obj, 'Option', 0x100 IF @ret <> 0 exec sp_OAGetErrorInfo @objЧто-бы я не скармливал третьему параметру процедуры sp_OASetProperty - вылезает ошибка: Error | Source | Description | HelpFile | HelpID 0x80020004 | NULL | NULL | NULL | 0 Как победить? |
6 окт 11, 13:08 [11394167] Ответить | Цитировать Сообщить модератору |
trew Member Откуда: Москва Сообщений: 2646 |
Dafur, Имя свойства OLE-объекта, уверен что такое есть? попробую угадать, вместо этого exec @ret = sp_OASetProperty @obj, 'Option', 0x100 написать это exec @ret = sp_OASetProperty @obj, 'VARIANT', 0x100 |
6 окт 11, 14:18 [11394822] Ответить | Цитировать Сообщить модератору |
Dafur Member Откуда: Сообщений: 28 |
Уверен. Если написать что-нибудь другое, то ошибка такая: Error | Source | Description | HelpFile | HelpID 0x80020006 | ODSOLE Extended Procedure | Неизвестное имя. | NULL | 0 |
||
6 окт 11, 14:27 [11394903] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
Велосиаед. Если плясать отседова (ссылка по последнюю версию). Тогда добавить строку (перед send): -- SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS = 0x100 EXEC @ErrCode = sys.sp_OAMethod @OLEHTTP ,'setOption' ,NULL ,2 ,0x100 IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'setRequestHeader' GOTO HTTPError END PS: Мои глаза!!! Что случилось с BOL?!!! |
7 окт 11, 17:03 [11403974] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
Чёрд -- SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS = 0x100
EXEC @ErrCode = sys.sp_OAMethod @OLEHTTP ,'setOption' ,NULL ,2 ,0x100 IF (@ErrCode != 0) BEGIN SET @ErrMethod = 'setOption' GOTO HTTPError END
|
7 окт 11, 17:04 [11403992] Ответить | Цитировать Сообщить модератору |
Dafur Member Откуда: Сообщений: 28 |
Mnior, там используется MSXML2.ServerXMLHTTP, тогда как я использую WinHttp.WinHttpRequest. Ну и соответственно ошибка Error | Source | Description | HelpFile | HelpID 0x80020006 | ODSOLE Extended Procedure | Неизвестное имя. | NULL | 0 |
7 окт 11, 17:19 [11404131] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
Вам так припёрло WinHttp.WinHttpRequest? |
||
7 окт 11, 19:08 [11404789] Ответить | Цитировать Сообщить модератору |
Dafur Member Откуда: Сообщений: 28 |
Mnior, спасибо. Переписал с использованием MSXML2.ServerXMLHTTP: declare @obj int, @ret int, @text varchar(max), @url varchar(max) select @url = 'https://host.ru/scrypt.aspx' exec @ret = sp_OACreate 'MSXML2.ServerXMLHTTP', @obj out IF @ret <> 0 exec sp_OAGetErrorInfo @obj exec @ret = sp_OAMethod @obj, 'Open', null, 'POST', @url, 'false' if @ret <> 0 exec sp_OAGetErrorInfo @obj exec @ret = sp_OAMethod @obj, 'setRequestHeader', null, 'Content-Type', 'text/xml; charset=utf-8' if @ret <> 0 exec sp_OAGetErrorInfo @obj exec @ret = sp_OAMethod @obj, 'setOption', null, 2 ,13056 if @ret <> 0 exec sp_OAGetErrorInfo @obj ... |
10 окт 11, 11:53 [11411467] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
SXH_SERVER_CERT_IGNORE_UNKNOWN_CA = 256 -- Unknown certificate authority SXH_SERVER_CERT_IGNORE_WRONG_USAGE = 512 -- Malformed certificate such as a certificate with no subject name SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID = 4096 -- Mismatch between the visited hostname and the certificate name being used on the server SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID= 8192 -- The date in the certificate is invalid or has expiredПонял. |
||
10 окт 11, 15:14 [11413419] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Аноним_Сергей
Guest |
У меня для WinHttp.WinHttpRequest.5.1 сработал такой вариант: exec @hr = sp_OASetProperty @object, 'Option', '13056', 4 |
18 ноя 15, 15:08 [18436016] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |