Я не очень хорош в C ++, если вы видите что-то во фрагменте кода, что может быть лучше, пожалуйста, просветите меня!
Я реализую winhttp в асинхронном режиме. Но у меня проблемы с получением ответа. Я не могу понять это. Потому что вы должны иметь возможность анализировать весь ответ сразу. Так как может возникнуть несколько параллельных запросов, буферизация ответа (заголовки + тело) в глобальной переменной не подходит.
Как я могу получить ответ на запрос http get? Или же, является ли хорошей практикой синхронное выполнение winhttp в новом потоке (поэтому основной цикл не блокируется, а затем вызывает функцию по завершении?):
void __stdcall cb(HINTERNET h, DWORD_PTR d, DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength){
char* s=new char[1];
DWORD dwSize = 0;
if (dwInternetStatus==WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE){
MessageBoxA(0,s,"",0);
WinHttpQueryDataAvailable( h, &dwSize);
.....
}
}
И звонок в основном:
...winhttpopen...
WinHttpSetStatusCallback(request, (WINHTTP_STATUS_CALLBACK)whCallback,WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS,0);
...winhttpsend....