Я не очень хорош в C++, если вы видите что-то в фрагменте кода, которое может быть лучше, пожалуйста, просветите меня!WinHTTP Async Callback
Я реализую 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....
Если у вас есть опыт работы с winhttp и вы можете дать руку :-) http://stackoverflow.com/questions/11577503/winhttp-used-in-async-mode-error-internet-cannot-connect-how-to -cleanly-close – Ghita
Забавно, как документация ** Asynchronous Completion в WinHTTP ** дает пример всего - кроме асинхронного обратного вызова. –