WinHTTP

Статус
В этой теме нельзя размещать новые ответы.

By_Surse

Известный
Автор темы
310
278
Дело было так....
C++:
std::string HTTPS_Request(LPCWSTR method, LPCWSTR https, LPCWSTR object_name, LPSTR data)
{
    DWORD dwSize = 0;
    DWORD dwDownloaded = 0;
    LPSTR pszOutBuffer;
    BOOL  bResults = FALSE;
    HINTERNET  hSession = NULL, hConnect = NULL, hRequest = NULL;
    DWORD data_len = strlen(data);
    std::string result = "";

    hSession = WinHttpOpen(L"WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);

    if (hSession) hConnect = WinHttpConnect(hSession, https, INTERNET_DEFAULT_HTTPS_PORT, 0);
    if (hConnect) hRequest = WinHttpOpenRequest(hConnect, method, object_name, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE);
    if (hRequest) bResults = WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, (LPVOID)data, data_len, data_len, 0);
    if (bResults) bResults = WinHttpReceiveResponse(hRequest, NULL);
    if (bResults)
    {
        do
        {
            dwSize = 0;
            WinHttpQueryDataAvailable(hRequest, &dwSize);

            pszOutBuffer = new char[dwSize + 1];
            if (!pszOutBuffer) dwSize = 0;
            else
            {
                ZeroMemory(pszOutBuffer, dwSize + 1);
                if (WinHttpReadData(hRequest, (LPVOID)pszOutBuffer, dwSize, &dwDownloaded))
                {
                    result = pszOutBuffer;
                    printf(result.c_str());
                }
                delete[] pszOutBuffer;
            }
        } while (dwSize > 0);
    }

    if (hRequest) WinHttpCloseHandle(hRequest);
    if (hConnect) WinHttpCloseHandle(hConnect);
    if (hSession) WinHttpCloseHandle(hSession);
    return result;
}

В переменной pszOutBuffer хранится ответ.
А теперь сам вопрос: как с*ка вернуть pszOutBuffer
 
Статус
В этой теме нельзя размещать новые ответы.