急如何实现需要验证身份的Http请求?(是IIS里勾选了集成windows身份验证那种,不是从提交表单登录信息那种)。请给想尽代码和注释
急!怎么实现需要验证身份的Http请求?(是IIS里勾选了集成windows身份验证那种,不是从提交表单登录信息那种)。请给想尽代码和注释!
如果某位高手给了我详尽、完整能运行成功的代码后,顺便请加下我QQ,可能就代码中不懂的地方请教一下!
很简单的搭建一个网站,里面就一个网页,如下图:
在IIS里勾选了“集成windows身份验证”后,如下图:
用浏览器打开这个网页是会弹出如下对话框:
我现在想用VC Http编程请求这个网站的某个Html页面改怎么实现?
我用如下代码不知道错在哪里,dwStatus一直等于0:
------解决方案--------------------
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");
}
如果某位高手给了我详尽、完整能运行成功的代码后,顺便请加下我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");
}