#include <Windows.h>
#include <WinInet.h>
#pragma comment(lib, "wininet")
struct post_input_t
{
PCHAR pszAgent;
PCHAR pszDomain;
PCHAR pszObject;
PCHAR pszHeaders;
PCHAR pszPostArgs;
};
DWORD WI_Post(post_input_t postData, PCHAR pszBuffer, DWORD dwBufSize)
{
PCCH lpAcceptBytes[] = { "*/*", NULL };
DWORD dwRead;
HINTERNET hInet = InternetOpenA(postData.pszAgent, 0, 0, 0, 0);
HINTERNET hSession = InternetConnectA(hInet, postData.pszDomain, INTERNET_DEFAULT_HTTP_PORT, 0, 0, INTERNET_SERVICE_HTTP, 0, 1);
HINTERNET hRequest = HttpOpenRequestA(hSession, "POST", postData.pszObject, NULL, postData.pszDomain, lpAcceptBytes, 0, 1);
HttpSendRequestA(hRequest, postData.pszHeaders, strlen(postData.pszHeaders), postData.pszPostArgs, strlen(postData.pszPostArgs));
InternetReadFile(hRequest, pszBuffer, dwBufSize, &dwRead);
pszBuffer[dwRead] = 0;
InternetCloseHandle(hRequest);
InternetCloseHandle(hSession);
InternetCloseHandle(hInet);
return dwRead;
}
int main(int argc, char *argv[])
{
post_input_t inp;
inp.pszAgent = "Агент СБУ";
inp.pszDomain = "google.com";
inp.pszObject = "/search";
inp.pszHeaders = "Content-Type: application/x-www-form-urlencoded\r\n";
inp.pszPostArgs = "q=123";
char szRespBuffer[16384];
DWORD read = WI_Post(inp, szRespBuffer, sizeof(szRespBuffer));
printf("length %d | data %s\r\n", read, szRespBuffer);
return 0;
}