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;
}