Here's the combination of helper functions I'm using to send data to either files or an HTTP server, variable filename, server, URI path, etc...
int httpSendPost(string server, string path, string data)
{
char* buf = &data[0];
string url = path + data; //combine path + data
wstring url1 = wstring(url.begin(), url.end()); // turn url into a wide string
wstring server1 = wstring(server.begin(), server.end()); // turn server into wide string
GetLastError();
HINTERNET hInternet, hConnect, hRequest;
hInternet = InternetOpen(TEXT("My UserAgent"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
hConnect = InternetConnect(hInternet, server1.c_str(), INTERNET_DEFAULT_HTTP_PORT, 0, 0, INTERNET_SERVICE_HTTP, 0, 0);
hRequest = HttpOpenRequest(hConnect, TEXT("POST"), url1.c_str(), 0, 0, 0, INTERNET_FLAG_RELOAD, 0);
if (hRequest == NULL)
cout << "HttpOpenRequest error code: " << GetLastError() << endl;
if (!HttpSendRequest(hRequest, 0, 0, buf, data.length()))
cout << "HttpSendRequest error code: " << GetLastError() << endl;
InternetCloseHandle(hInternet);
InternetCloseHandle(hConnect);
InternetCloseHandle(hRequest);
return 0;
}
int httpSendGet(string server, string path, string data)
{
string url = path + data; //combine path + data
wstring url1 = wstring(url.begin(), url.end()); // turn url into a wide string
wstring server1 = wstring(server.begin(), server.end()); // turn server into wide string
GetLastError();
HINTERNET hInternet, hConnect, hRequest;
hInternet = InternetOpen(TEXT("My UserAgent"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
hConnect = InternetConnect(hInternet, server1.c_str(), INTERNET_DEFAULT_HTTP_PORT, 0, 0, INTERNET_SERVICE_HTTP, 0, 0);
hRequest = HttpOpenRequest(hConnect, TEXT("GET"), url1.c_str(), 0, 0, 0, INTERNET_FLAG_RELOAD, 0);
if (hRequest == NULL)
cout << "HttpOpenRequest error code: " << GetLastError() << endl;
if (!HttpSendRequest(hRequest, 0, 0, NULL, NULL))
cout << "HttpSendRequest error code: " << GetLastError() << endl;
InternetCloseHandle(hInternet);
InternetCloseHandle(hConnect);
InternetCloseHandle(hRequest);
return 0;
}
int toTempFile(string fileName, string toFile)
{
wstring fileName1 = wstring(fileName.begin(), fileName.end());
wstring path;
wchar_t wchPath[MAX_PATH];
if (GetTempPathW(MAX_PATH, wchPath))
path = wchPath;
path = path.append(fileName1.c_str());
ofstream out(path, ios::app);
out << toFile << endl;
out.close();
return 0;
}