Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > https


Автор: jimbo 28.5.2010, 13:46
Всем привет!

пытаюсь послать запрос https. использую библиотеку wininet. ниже представлен код и я на отправку запроса получаю ошибку 
12057 - означает она ERROR_INTERNET_SEC_CERT_REV_FAILED.
как я понимаю это ошибка изъятия сертификата. как решить проблему?

Код

DWORD dwFlag=
        INTERNET_FLAG_KEEP_CONNECTION | 
        INTERNET_FLAG_SECURE | 
        INTERNET_FLAG_IGNORE_CERT_CN_INVALID | 
        INTERNET_FLAG_IGNORE_CERT_DATE_INVALID | 
        SECURITY_FLAG_IGNORE_UNKNOWN_CA 
        ; 

    HINTERNET hSession;
    hSession = InternetOpenA("wininet example",INTERNET_OPEN_TYPE_PRECONFIG,0,0,0);
    if(!hSession) 
    {
        DWORD error = GetLastError();
        printf("hSession.%d\n",error);
        return 0;
    }
    HINTERNET hConnect = InternetConnectA(hSession,"soundforge.com",INTERNET_DEFAULT_HTTPS_PORT,
        0,0,INTERNET_SERVICE_HTTP,0,0);
    if(!hConnect) 
    {
        DWORD error = GetLastError();
        printf("hConnect.%d\n",error);
        return 0;
    }
    HINTERNET hRequest = HttpOpenRequestA(hConnect,
                    "GET",
                    "/",
                    NULL,
                    NULL,
                    0,
                    dwFlag,
                    0);

    if(!hRequest)
    {
        DWORD error = GetLastError();
        printf("hRequest.%d\n",error);
        return 0;
    }
    BOOL bRes = InternetSetOption(hConnect,INTERNET_OPTION_PROXY_USERNAME,"asdasd",strlen("asdasd"));
    if(bRes==FALSE)
    {
        DWORD error = GetLastError();
        printf("InternetSetOption.%d\n",error);
        return 0;
    }
    bRes = InternetSetOption(hConnect,INTERNET_OPTION_PROXY_PASSWORD,"asdasd",strlen("asdasd"));
    if(bRes==FALSE)
    {
        DWORD error = GetLastError();
        printf("InternetSetOption.%d\n",error);
        return 0;
    }
    if(!HttpSendRequestA(hRequest,0,0,0,0))
    {
        DWORD error = GetLastError();
}

Автор: jimbo 31.5.2010, 11:54
Разборался, кому интересно, при помощи этого кода:

http://www.codeproject.com/KB/IP/wininet_ssl___certificate.aspx


Пишите в личку, если будут вопросыsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)