HTTP POST запрос через Wininet - PullRequest
0 голосов
/ 29 марта 2019

В VC ++ я пытаюсь отправить запрос HTTP POST и получить его ответ.

У меня есть приведенный ниже код, который успешно компилируется, но не удается выполнить POST.

Сначала я пытаюсь отправить запрос POST в корзину запросов для проверки

int main(int argc, _TCHAR* argv[])
{
    static CHAR hdrs[] = "Content-Type: application/x-www-form-urlencoded";
    static CHAR frmdata[] = "name=John+Doe&userid=hithere&other=P%26Q";

    HINTERNET hSession = InternetOpenA("MyAgent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    HINTERNET hConnect = InternetConnect(hSession "pipedream.com", 8733, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
    HINTERNET hRequest = HttpOpenRequestA(hConnect, "POST", "/r/enj77inn26shk", NULL, NULL, NULL, 0, 1);
    HttpSendRequestA(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata));

Затем прочитайте ответ, используя

    DWORD dwContentLen;
    DWORD dwBufLen = sizeof(dwContentLen);
    if (HttpQueryInfo(hRequest,
                  HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,
                  (LPVOID)&dwContentLen,
                  &dwBufLen,
                  0))
    {
        char *pData = (char*)GlobalAlloc(GMEM_FIXED, dwContentLen + 1);
        DWORD dwReadSize = dwContentLen / 10;   // We will read 10% of data
                                            // with each read.

        DWORD cReadCount;
        DWORD dwBytesRead;
        char *pCopyPtr = pData;
        for (cReadCount = 0; cReadCount < 10; cReadCount++)
        {
            InternetReadFile(hRequest, pCopyPtr, dwReadSize, &dwBytesRead);
            pCopyPtr = pCopyPtr + dwBytesRead;
        }
        // extra read to account for integer division round off
        InternetReadFile(hRequest,
                     pCopyPtr,
                     dwContentLen - (pCopyPtr - pData),
                     &dwBytesRead);
        // Null terminate data
        pData[dwContentLen] = 0;
    }
    cout <<pCopyPtr ;
    system ("pause");
    return 0;
}

Конечная точка, которую я отправляю на

image

...