У меня возникли проблемы с использованием WinInet
локально. У меня есть локальный веб-сервер Apache (xampp), который работает хорошо, проблема в том, что когда я пытаюсь сделать запрос GET на PHP-скрипт, кажется, что он делает это только один раз. PHP-скрипт просто выводит случайное число, и я вижу то же число 3 раза (сценарий не виноват). Я также проверил журнал доступа к Apache, и он появляется только один раз. Странно, что, когда НЕ использует его локально, цикл работает отлично, и он отправляет несколько запросов (это также показывает Wireshark).C++ WinInet только делает 1 запрос
Вот код, упрощена и все еще дает проблемы:
#include <Windows.h>
#include <WinInet.h>
#include <iostream>
#include <string>
#pragma comment(lib, "wininet.lib")
void req()
{
HINTERNET hInternet = InternetOpenW(L"useragent", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
HINTERNET hConnect = InternetConnectW(hInternet, L"127.0.0.1", 80, NULL, NULL, INTERNET_SERVICE_HTTP, 0, NULL);
HINTERNET hRequest = HttpOpenRequestW(hConnect, L"GET", L"test/test.php", NULL, NULL, NULL, 0, 0);
BOOL bRequestSent = HttpSendRequestW(hRequest, NULL, 0, NULL, 0);
std::string strResponse;
const int nBuffSize = 1024;
char buff[nBuffSize];
BOOL bKeepReading = true;
DWORD dwBytesRead = -1;
while (bKeepReading && dwBytesRead != 0)
{
bKeepReading = InternetReadFile(hRequest, buff, nBuffSize, &dwBytesRead);
strResponse.append(buff, dwBytesRead);
}
std::cout << strResponse << std::endl;
InternetCloseHandle(hRequest);
InternetCloseHandle(hConnect);
InternetCloseHandle(hInternet);
}
int main()
{
for (int x = 0;x < 3; x++) // 3 times
{
req();
Sleep(2000);
}
system("PAUSE");
}
Я не могу понять это ...