Ternick
@Ternick

Почему wininet не отправляет запрос дважды на одинаковый адрес?

Суть приложения находится в том что оно должно проверять есть ли обновления для клиента (сообщения и там ещё штуки некоторые). С начала поступает 1 запрос на сайт, а позже при вызове функции возвращаются предыдущие данные и всё на этом.
КОД:
#include <string>
#include <iostrim>
#include <Windows.h>
#include <wininet.h>

#pragma comment(lib, "wininet")

using namespace std;

string getRequest(string url, string target, string hwid){
	HINTERNET hInternet, hConnect, hRequest;
	hInternet = InternetOpen(TEXT("TERNICK OWL"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
	if (hInternet != NULL) {
		hConnect = InternetConnect(hInternet, TEXT(url.c_str()), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1u);
		if (hConnect != NULL) {
			hRequest = HttpOpenRequest(hConnect, TEXT("GET"), TEXT(("index.php?target=" + target + "&hwid=" + hwid).c_str()), NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 1);
			if (hRequest != NULL) {
				BOOL bSend = HttpSendRequest(hRequest, NULL, 0, NULL, 0);
				if (bSend) {
					DWORD dwSize = 0;
					string result;
					char *buff = new char[256];
					do
					{
						memset(buff, 0, 256);
						InternetReadFile(hRequest, buff, sizeof(buff)-1, &dwSize);
						result.append(buff, dwSize);
					} while (dwSize != 0);
					delete[] buff;
					InternetCloseHandle(hRequest);
					InternetCloseHandle(hConnect);
					InternetCloseHandle(hInternet);
					return result;
				}
				else {
					InternetCloseHandle(hRequest);
					InternetCloseHandle(hConnect);
					InternetCloseHandle(hInternet);
				}
			}
			else {
				InternetCloseHandle(hRequest);
				InternetCloseHandle(hConnect);
				InternetCloseHandle(hInternet);
			}
		}
		else {
			InternetCloseHandle(hConnect);
			InternetCloseHandle(hInternet);
		}
	}
	else {
		InternetCloseHandle(hInternet);
	}
	return "";
}
int main(){
while (TRUE) {
			response = getRequest(site, "getNums", getHwid());
                        cout << getRequest(site, "getNums", getHwid()) << endl;
}
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Возможно, кеш клиентский срабатывает.

Попробуйте в HttpOpenRequest добавить флаг:
INTERNET_FLAG_RELOAD
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы