RohanBhosale21 Ответов: 2

Winhttpsetoption не устанавливает параметр WINHTTP_OPTION_SECURE_PROTOCOLS, возвращая 0 в качестве возвращаемого значения.


Интерфейс IWinHttpRequest работал нормально до тех пор, пока версия TLS не была изменена со стороны сервера. Версия TLS сервера была изменена на TLSv1. 1 и выше.

из-за этого изменения я не могу получить никакого ответа от сервера.

Поэтому я решил использовать WinHttpSetOption для установки версии протокола. но это не работает.

Пожалуйста, кто-нибудь может мне помочь?

Что я уже пробовал:

Интерфейс IWinHttpRequest работал нормально до тех пор, пока версия TLS не была изменена со стороны сервера. Версия TLS сервера была изменена на TLSv1. 1 и выше.

из-за этого изменения я не могу получить никакого ответа от сервера.

Поэтому я решил использовать WinHttpSetOption для установки версии протокола. но это не работает.

Ниже приведен код, в котором я устанавливаю параметры.

dwVal = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2; 
bRet = WinHttpSetOption(request_,WINHTTP_OPTION_SECURE_PROTOCOLS,&dwVal,sizeof(dwVal)); 
if(!bRet)
{ 
TRACE("error - " , GetLastError());

	break; 
}



Вышеприведенный код не дает никакого кода ошибки, хотя код возврата для setoption равен нулю.

Jochen Arndt

Как вы вызываете WinHttpSetOption (показать код с параметрами и связанными переменными)?

Что такое код ошибки (вызов GetLastError)?

Пожалуйста, используйте зеленую ссылку "улучшить вопрос", чтобы добавить эту информацию к вашему вопросу.

Jochen Arndt

TRACE ("error -", GetLastError());

получит код ошибки, но не распечатает его.

Воспользуйся:

TRACE ("error - %d\n", GetLastError());

2 Ответов

Рейтинг:
2

RohanBhosale21

Спасибо за помощь.
Я получил это работает.
Я обнаружил, что функция WinHttpSetOption требует дескриптора HINTERNET для установки данных. Это может быть либо дескриптор сеанса, либо дескриптор запроса, в зависимости от того, какой параметр задан. А для опции WINHTTP_OPTION_SECURE_PROTOCOLS мы должны дать Дескриптор сеанса.
В моем приведенном выше коде я дал дескриптор запроса и причину того, что он не работает.


Рейтинг:
0

KarstenK

Вы, должно быть, сделали что-то не так. Прочтите документацию по Флаги опций для WinHttpSetOption Значение WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 должно быть правильным для вас.

Если это не поможет, спросите с помощью GetLastError () о коде ошибки, чтобы выяснить это.