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

    #include <vector>
    #include <winsock2.h>
    #include <Winhttp.h>
    #include <windows.h>
    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    #pragma comment(lib, "winhttp")
    int main(int argc, char* argv[])
    {
    
        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.
        // 这边如果要请求具体某个地址的话 把NULL 改成 XXX地址
        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);
    
    
    
            system("pause");
            return 0;
    }
  • 相关阅读:
    Hibernate,get()和load()区别
    Hibernate,Session方法使得java对象进入持久化状态;持久化对象特征
    Hibernate,Session清理缓存时间点
    frameset子窗口获取父窗口失败原因?
    struts2,实现Ajax异步通信
    struts2-json-plugin插件实现异步通信
    Hibernate,JPA注解@ManyToMany_JoinTable
    Hibernate,JPA注解@ManyToMany
    SparkStreaming操作Kafka
    DirectStream、Stream的区别-SparkStreaming源码分析02
  • 原文地址:https://www.cnblogs.com/Galesaur-wcy/p/15099578.html
Copyright © 2011-2022 走看看