enum HTTPREQUESTRESULT { RES_REQ_DONE_OK, RES_REQ_ERROR_HTTP, RES_REQ_ERROR_SERVER, RES_REQ_ERROR_NET }; // 请求 HTTPREQUESTRESULT RequestHttp(LPCTSTR url) { CInternetSession session; DWORD dwReadLen = 0; CString szRequestHeader;// HTTP 头 HTTPREQUESTRESULT result = RES_REQ_ERROR_HTTP; DWORD dwHttpFileSize = 0; DWORD dwVersion = GetVersion(); szRequestHeader.Format(_T("Accept: */*/r/nUser-Agent: Mozilla/4.0 (compatible; ") _T("MSIE 9.00; System %u.%u.%u; Fyter Web Requester)/r/nRange: bytes=%u-/r/n"), LOBYTE(LOWORD(dwVersion)), HIBYTE(LOWORD(dwVersion)), HIWORD(dwVersion), 0/*断点续传的开始值*/); CHttpFile* netfile = (CHttpFile*)session.OpenURL(url, 1, INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_PRAGMA_NOCACHE, szRequestHeader, -1); if( netfile ) { DWORD status = 0; netfile->QueryInfoStatusCode(status); if( status >= 200 && status <= 299 ) { netfile->QueryInfo(HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, dwHttpFileSize); char* httpResponse = new char[dwHttpFileSize+1]; dwReadLen = netfile->Read(httpResponse, dwHttpFileSize); httpResponse[dwHttpFileSize] = 0; delete httpResponse; result = RES_REQ_DONE_OK; } else { result = RES_REQ_ERROR_HTTP; } netfile->Close(); delete netfile; session.Close(); } else { result = RES_REQ_ERROR_NET; } return result; }