急如何实现需要验证身份的Http请求?(是IIS里勾选了集成windows身份验证那种,不是从提交表单登录信息那种)。请给想尽代码和注释

急!怎么实现需要验证身份的Http请求?(是IIS里勾选了集成windows身份验证那种,不是从提交表单登录信息那种)。请给想尽代码和注释!
如果某位高手给了我详尽、完整能运行成功的代码后,顺便请加下我QQ,可能就代码中不懂的地方请教一下!
很简单的搭建一个网站,里面就一个网页,如下图:


在IIS里勾选了“集成windows身份验证”后,如下图:

用浏览器打开这个网页是会弹出如下对话框:


我现在想用VC Http编程请求这个网站的某个Html页面改怎么实现?
我用如下代码不知道错在哪里,dwStatus一直等于0:
C/C++ code

            CInternetSession session("sess",0);            
CHttpConnection* connect = session.GetHttpConnection(
                sURL
                ,INTERNET_FLAG_NO_AUTO_REDIRECT
                ,80,"Rainny","Rainny");

            CString strServerName;
            CString strObject;
            INTERNET_PORT nPort;        
            DWORD dwServiceType;

            if (!AfxParseURL(sURL, dwServiceType, strServerName, strObject, nPort) ||
                dwServiceType != INTERNET_SERVICE_HTTP)
            {
                AfxMessageBox("AfxParseURL Error");
                return;
            }

              CHttpFile* outfile;
            outfile = connect->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject,NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
        //pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,       strObject, NULL, 1, NULL, NULL, dwHttpRequestFlags);

            DWORD dwStatus;
            DWORD dwBuffLen = sizeof(dwStatus);
            BOOL bSuccess = outfile->QueryInfo(
            HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
            &dwStatus, &dwBuffLen);
            if( bSuccess && dwStatus >= 200 && dwStatus < 300)            {
                char buffer[2048 + 1];
                memset(buffer, 0, 2049);  
                int nReadCount = 0;
                while((nReadCount = outfile->Read(buffer, 2048)) > 0)
                {
                    buffer[nReadCount] = '\0';
                    //strSentence += buffer;
                    memset(buffer, 0, 2049);
                }
            }



------解决方案--------------------
CInternetSession session("mysession");
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;
CString sUrl = "http://10.16.29.54:81/HTMLPage1.htm";
try
{
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
const TCHAR szHeaders[] = _T("Accept: */*\r\nUser-Agent: AutoUpdate_Kevin\r\n");
DWORD dwHttpRequestFlags = INTERNET_FLAG_RELOAD;

if (!AfxParseURL(sUrl, dwServiceType, strServerName, strObject, nPort) ||
dwServiceType != INTERNET_SERVICE_HTTP)
{
AfxMessageBox("AfxParseURL Error");
return ;
}

pServer = session.GetHttpConnection(strServerName, nPort,"Rainny","Rainny");
pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,
strObject, NULL, 1, NULL, NULL, INTERNET_FLAG_EXISTING_CONNECT);
pFile->AddRequestHeaders(szHeaders);
pFile->SendRequest();

delete pFile;
//char Headers[] = "Cookie: BAIDUID=BC3ABCFD415152A40443C8D92282B796:FG=1\r\n\r\n";

//CInternetSession sess(_TEXT(""));
CHttpFile* pFile = (CHttpFile*)session.OpenURL("http://10.16.29.54:81/HTMLPage1.htm",
1, INTERNET_FLAG_TRANSFER_ASCII,szHeaders); 

CString str ,sMessage;

while (pFile->ReadString(str))
{
sMessage += str + "\n";
}
pFile->Close();
delete pFile;
AfxMessageBox(sMessage);
}
catch(...)
{
AfxMessageBox("Error");
}