unsigned long HttpRequestManager::StartRequest(string path, HttpEntiy& entiy, IHttpRequestManagerCallback* callback, SiteType type, bool bNoCache) { FileLog("httprequest", "HttpRequestManager::StartRequest( " "path : %s, " "entiy : %p, " "callback : %p )", path.c_str(), &entiy, callback ); long requestId = 0; string host = mHttpRequestHostManager->GetHostByType(type); // 配置http用户认证 entiy.SetAuthorization(mUser, mPassword); // 配置客户端版本 entiy.AddHeader(mVersionKey, mVersionCode); // FileLog("httprequest", "HttpRequestManager::StartRequest() request lock begin, path:%s", path.c_str()); mKMutex.lock(); // FileLog("httprequest", "HttpRequestManager::StartRequest() request lock ok, path:%s", path.c_str()); HttpRequest *request = new HttpRequest(); request->SetCallback(this); request->SetNoCacheData(bNoCache); requestId = request->StartRequest(host, path, entiy); FileLog("httprequest", "HttpRequestManager::StartRequest( " "requestId : %ld, " "path : %s " ") ", requestId, path.c_str() ); mHttpRequestMap.insert(HttpRequestMap::value_type(requestId, request)); if( callback != NULL ) { mIHttpRequestManagerCallbackMap.insert(IHttpRequestManagerCallbackMap::value_type(requestId, callback)); } // FileLog("httprequest", "HttpRequestManager::StartRequest() request lock finish, path:%s", path.c_str()); mKMutex.unlock(); // FileLog("httprequest", "HttpRequestManager::StartRequest() request unlocked, path:%s", path.c_str()); return requestId; }