나는 C++에서별로 좋지 않다. 코드 조각에서 뭔가 더 잘 될 수 있다면 나에게 교육 시켜라!WinHTTP 비동기 콜백
저는 비동기식으로 winhttp를 구현하고 있습니다. 하지만 인스턴트 메시지를받는 데 문제가 있습니다. 나는 그것을 이해할 수 없다. 왜냐하면 당신은 한 번에 전체 응답을 parsethe 수 있어야합니다. 여러 동시 요청이 발생할 수 있기 때문에 전역 변수에 응답 (헤더 + 본문)을 버퍼링하는 것은 길이 아닙니다.
http get 요청의 응답을 검색하려면 어떻게해야합니까? 아니면, 그것은 새로운 스레드에서 WinHTTP에 동기를 실행하는 것이 좋습니다 (그래서 메인 루프는 아무튼; t 차단 얻을하고 수행하는 함수를 호출?) :
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
비동기 콜백을 제외하고 ** WinHTTP ** 문서의 ** 비동기 완료가 모든 것을 보여주는 방법은 재미 있습니다. –