MFC定时通过POST访问网页

在这里插入图片描述
整体的布局是这样的。

这个我总共做了3个版本,一个是直接用ShellExecute打开网页,一个是通过CInternerConnection获取网页的内容,最后这个便是通过post访问指定网址(需要网址,端口,路径名)

总的思路是通过判断定时时间和当前系统的时间是否相等,相等就执行访问。

定时的功能是直接用控件DATETIMEPICKER,然后设置一下时间的显示格式

CDateTimeCtrl m_date;
//因为是每天定时,所以只要显示小时和分钟
m_date.SetFormat(_T("HH:mm"));

时间的更新采用的是SetTimer
ID为1(只要跟后面的KillTimer一样就行),间隔1分钟,NULL表示执行的是OnTimer函数

SetTimer(1, 60000, NULL);

OnTimer函数代码如下

CDialogEx::OnTimer(nIDEvent);
//获取当前时间
	CTime CurrenTime;
	CurrenTime = CTime::GetCurrentTime();
	chour = CurrenTime.GetHour();
	cminute = CurrenTime.GetMinute();

	if (chour == hour && cminute == minute)
	{
		CInternetSession session(L"Http");
		try
		{
			INTERNET_PORT nPort = 319;
			DWORD dwRet = 0;

			CHttpConnection* pServer = session.GetHttpConnection(L"game818.dyyl8888.com", nPort);
			CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, L"Account/AutoRunWriteControlUserInfo");

			CString strHeaders = L"Content-Type: application/x-www-form-urlencoded"; //请求头

			//开始发送请求

			pFile->SendRequest(strHeaders, (LPVOID)postData.c_str(), postData.size());
			pFile->QueryInfoStatusCode(dwRet);

			if (dwRet == HTTP_STATUS_OK)
			{
				bCount++;
				SetDlgItemInt(IDC_EDIT1, bCount);
				UpdateData(false);
			}
			else
			{
				MessageBox(L"启动失败");
			}
			delete pFile;
			delete pServer;
		}
		catch (CInternetException* pEx)
		{
			//catch errors from WinInet
			TCHAR pszError[200];
			pEx->GetErrorMessage(pszError, 200);

			std::cout << pszError << std::endl;//显示异常信息
			MessageBox(L"发生异常");
		}
		session.Close();
	}

CString 转 LPCTSTR 直接强转

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值