下边的代码是点击按钮事件的,HttpSendRequest明显已经执行成功,得到的recv.html中依然是登陆页面,不是我想要的登陆后跳过去的页面
#include <afxinet.h>
#include <WinInet.h>
#include <cstring>
#pragma comment(lib,"wininet.lib")
void CLOGINDlg::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
HINTERNET hSession = NULL;
HINTERNET hConnect = NULL;
HINTERNET hRequest = NULL;
//InternerOpen
LPCSTR lpszAgent = "Application";
DWORD dwAccessType = INTERNET_OPEN_TYPE_PRECONFIG;
/*
HINTERNET InternetOpen(
_In_ LPCTSTR lpszAgent, //指定调用Wininet函数的应用程序或入口,该入口作HTTP协议中用户代理项
_In_ DWORD dwAccessType, //访问要求类型
_In_ LPCTSTR lpszProxyName, //代理服务器的名字
_In_ LPCTSTR lpszProxyBypass,//指向一个字符串,指定一个可选的主机名列表或IP地址
_In_ DWORD dwFlags
);
*/
hSession = InternetOpenA(lpszAgent, dwAccessType, NULL, NULL, 0);
if (!hSession)
{
printf("网络打开失败!");
return ;
}
//InternetConnectA
LPCSTR lpszServerName = "202.200.144.63";
INTERNET_PORT nServerPort = INTERNET_DEFAULT_HTTP_PORT;
DWORD dwService = INTERNET_SERVICE_HTTP;
hConnect = InternetConnectA(hSession, lpszServerName, nServerPort, NULL, NULL, dwService, 0, 1);
if (!hConnect)
{
printf("网络连接失败!");
return ;
}
//HttpOpenRequestA
LPCSTR lpszVerb = "GET";
LPCSTR lpszObjectName = "xs_main.aspx?xh=120620223";//网站的对象名,网址在IntetnetConnectA第二个参数指定
LPCSTR lpszVersion = "HTTP/1.1";
LPCSTR lpszReferer = "Referer:http://202.200.144.63/xs_main.aspx?xh=120620223 ";
LPCSTR lpszAcceptTypes = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
DWORD dwFlags = INTERNET_FLAG_RELOAD;
hRequest = HttpOpenRequestA(hConnect, lpszVerb, lpszObjectName, lpszVersion, lpszReferer, &lpszAcceptTypes, dwFlags, 1);
if (!hRequest)
{
printf("打开请求失败!");
return ;
}
//HttpSendRequestA
LPCSTR lpszHeaders = "Content-Type: application/x-www-form-urlencoded;Cookie: safedog-flow-item=F727C5A572FD29201828136C14E22568; ASP.NET_SessionId=uxizon55w1ua4djitykxu3vl\r\n";
DWORD dwHeadersLength = -1L;
char szFormData[1024] = { 0 };
strcpy(szFormData, "__VIEWSTATE=dDwyODE2NTM0OTg7Oz4h2wC4w12c8RCRF3jDvJBjVLPUHQ%3D%3D&txtUserName=120620223&TextBox2=******&txtSecretCode="+m_YZM+"&RadioButtonList1=%D1%A7%C9%FA&Button1=&lbLanguage=&hidPdrs=&hidsc=\r\n");//保存用户名,密码,用户类别及验证码
LPVOID pBuf = (LPVOID)szFormData;
BOOL bReturn = HttpSendRequestA(hRequest, lpszHeaders, dwHeadersLength, NULL, 0);
if (!bReturn)
{
printf("返回请求失败!");
return ;
}else
AfxMessageBox("登陆成功!");
char szRecvBuf[1024 + 1]; // 接受数据缓冲区
DWORD dwNumberOfBytesRead; // 服务器返回大小
DWORD dwRecvTotalSize = 0; // 接受数据总大小
DWORD dwRecvBuffSize = 0; // 接受数据buf的大小
memset(szRecvBuf, 0, 1024 + 1);
LPCSTR lpFileName = "recv.html";
DWORD dwNumberOfBytesWritten;
HANDLE hOpenFile = (HANDLE)CreateFileA(lpFileName, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, NULL, NULL);
if (hOpenFile == INVALID_HANDLE_VALUE)
{
printf("打开文件失败!");
hOpenFile = NULL;
return ;
}
do
{
bReturn = InternetReadFile(hRequest, szRecvBuf, 1024, &dwNumberOfBytesRead);
if (!bReturn)
{
printf("读取文件失败!");
break;
}
// 统计接受数据的大小
szRecvBuf[dwNumberOfBytesRead] = '\0';
dwRecvTotalSize += dwNumberOfBytesRead;
dwRecvBuffSize += strlen(szRecvBuf);
WriteFile(hOpenFile, szRecvBuf, dwNumberOfBytesRead, &dwNumberOfBytesWritten, NULL);
} while (dwNumberOfBytesRead != 0);
CloseHandle(hOpenFile);
InternetCloseHandle(hSession);
InternetCloseHandle(hConnect);
InternetCloseHandle(hRequest);
}