zoukankan      html  css  js  c++  java
  • winhttp 发送https的get请求

    来自:https://docs.microsoft.com/en-us/windows/win32/api/winhttp/nf-winhttp-winhttpconnect

    DWORD dwSize = 0;
        DWORD dwDownloaded = 0;
        LPSTR pszOutBuffer;
        BOOL  bResults = FALSE;
        HINTERNET  hSession = NULL, 
                   hConnect = NULL,
                   hRequest = NULL;
    
        // Use WinHttpOpen to obtain a session handle.
        hSession = WinHttpOpen( L"WinHTTP Example/1.0",  
                                WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
                                WINHTTP_NO_PROXY_NAME, 
                                WINHTTP_NO_PROXY_BYPASS, 0);
    
        // Specify an HTTP server.
        if (hSession)
            hConnect = WinHttpConnect( hSession, L"www.microsoft.com",
                                       INTERNET_DEFAULT_HTTPS_PORT, 0);
    
        // Create an HTTP request handle.
        if (hConnect)
            hRequest = WinHttpOpenRequest( hConnect, L"GET", NULL,
                                           NULL, WINHTTP_NO_REFERER, 
                                           WINHTTP_DEFAULT_ACCEPT_TYPES, 
                                           WINHTTP_FLAG_SECURE);
    
        // Send a request.
        if (hRequest)
            bResults = WinHttpSendRequest( hRequest,
                                           WINHTTP_NO_ADDITIONAL_HEADERS,
                                           0, WINHTTP_NO_REQUEST_DATA, 0, 
                                           0, 0);
    
     
        // End the request.
        if (bResults)
            bResults = WinHttpReceiveResponse( hRequest, NULL);
    
        // Keep checking for data until there is nothing left.
        if (bResults)
            do 
            {
                // Check for available data.
                dwSize = 0;
                if (!WinHttpQueryDataAvailable( hRequest, &dwSize))
                    printf("Error %u in WinHttpQueryDataAvailable.
    ", GetLastError());
    
                // Allocate space for the buffer.
                pszOutBuffer = new char[dwSize+1];
                if (!pszOutBuffer)
                {
                    printf("Out of memory
    ");
                    dwSize=0;
                }
                else
                {
                    // Read the Data.
                    ZeroMemory(pszOutBuffer, dwSize+1);
    
                    if (!WinHttpReadData( hRequest, (LPVOID)pszOutBuffer, 
                                          dwSize, &dwDownloaded))
                        printf( "Error %u in WinHttpReadData.
    ", GetLastError());
                    else
                        printf( "%s
    ", pszOutBuffer);
                
                    // Free the memory allocated to the buffer.
                    delete [] pszOutBuffer;
                }
    
            } while (dwSize > 0);
    
    
        // Report any errors.
        if (!bResults)
            printf("Error %d has occurred.
    ", GetLastError());
    
        // Close any open handles.
        if (hRequest) WinHttpCloseHandle(hRequest);
        if (hConnect) WinHttpCloseHandle(hConnect);
        if (hSession) WinHttpCloseHandle(hSession);
  • 相关阅读:
    图像通道的分离与合并
    frame表单嵌套的定位
    windows10(家庭版)+ laradock 安装踩坑记一记
    Laradock + tp5 + nginx 配置虚拟机域名始终跳转首页/502报错
    php私有组件以及创建自己的composer私有组件(packagist+git+composer)
    申请一个美国paypal账户
    php执行shell脚本
    Linux修复日志
    php7 安装redis拓展
    vim编辑器-删除命令
  • 原文地址:https://www.cnblogs.com/Galesaur-wcy/p/15328783.html
Copyright © 2011-2022 走看看