Данный пример показывает, как установить HTTP соединение через Secure Socket Layer (SSL) или Private Communications Technology (PCT) используя WinInet API-вызовы. Защищённый HTTP (HTTPS://) располагаетня на 443 порту. Следующий пример может быть использован для установления HTTPS соединения: ... hOpen = InternetOpen (...); Connect = InternetConnect ( hOpen, // обработчик InternetOpen "MyHttpServer", // Имя сервера INTERNET_DEFAULT_HTTPS_PORT,// По умолчанию HTTPS порт - 443 "", // Имя пользователя "", // Пароль пользователя INTERNET_SERVICE_HTTP, // Сервис 0, // Флаги 0 // Контекст ); hReq = HttpOpenRequest ( hConnect, // Обработчик InternetConnect "GET", // Метод "", // Имя объекта HTTP_VERSION, // Версия "", // Ссылка (Referer) NULL, // Дополнительные заголовки INTERNET_FLAG_SECURE, // Флаги 0 // Контекст ); ... Всё отличие при использовании HTTPS вместо HTTP заключается в следующем: - InternetConnect использует INTERNET_DEFAULT_HTTPS_PORT вместо INTERNET_INVALID_PORT_NUMBER или INTERNET_DEFAULT_HTTP_PORT
- HttpOpenRequest использует опцию INTERNET_FLAG_SECURE в добавление ко всем остальным опциям.
Чтобы обойти ошибки сертификации, можно использовать следующие две опции в HttpOpenRequest либо в InternetOpenUrl: - INTERNET_FLAG_IGNORE_CERT_CN_INVALID - Игнорирует ошибки, которые могут возникать при несовпадении имени хоста сервера и имени хоста, указанном в запросе.
- INTERNET_FLAG_IGNORE_CERT_DATE_INVALID - Игнорирует ошибки, связанные с истекшим сроком действия сертификата сервера.
Более полная информация по этим флагам расписана в документации Internet Client SDK. |