如题,大侠指点

解决方案 »

  1.   

    支持的。但是你需要做点手脚——接受客户证书if (!HttpSendRequest (m_hSess, lpszHeader, header_len, (void *)payload, len))
    {
    DWORD dwError = GetLastError ();
    TRACE ("DWERROR %d.\n", dwError);if ((dwError == ERROR_INTERNET_INVALID_CA) || 
    (dwError == ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED) ||(dwError == ERROR_INTERNET_SEC_CERT_DATE_INVALID) || (dwError == ERROR_INTERNET_SEC_CERT_CN_INVALID))
    {/*
    if (dwError == ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED){this->GetClientCertificate ();*/DWORD dwFlag;DWORD dwBuffLen = sizeof(dwFlag);InternetQueryOption (m_hSess, INTERNET_OPTION_SECURITY_FLAGS,(LPVOID)&dwFlag, &dwBuffLen);dwFlag |= (SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID );InternetSetOption (m_hSess, INTERNET_OPTION_SECURITY_FLAGS, &dwFlag, sizeof (dwFlag) );/*
    INTERNET_CERTIFICATE_INFO sInfo;
    DWORD dwSize = sizeof(sInfo);if(!InternetQueryOption(m_hSess,INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT, 
    &sInfo, &dwSize))
    {dwError = GetLastError();

    */
    if (!HttpSendRequest(m_hSess, lpszHeader, header_len, (void *)payload, len)){
    dwError = GetLastError();
    TRACE ("DWERROR %d.\n", dwError);
    if (lpszHeader)
    delete [] lpszHeader;return -1;