有时候,总想验证一些奇怪的想法,干脆就写下来,以备后查。
想法:获取HTTP(S)协议GET请求返回的信息
1. 获取HTTP协议GET请求返回的信息
#include <Windows.h>
#include <Wininet.h>
#pragma comment(lib, "Wininet.lib")
int main(int argc, char* argv[])
{
BOOL bRet = FALSE;
HINTERNET hSession = NULL, hRequest = NULL;
HANDLE hFile = INVALID_HANDLE_VALUE;
do
{
hSession = InternetOpen(_T("Testing"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hSession == NULL) {
printf_s("InternetOpen failed. E%u\n", GetLastError());
break;
}
LPCTSTR lpURL = _T("http://192.168.1.2/download/updatefile.dat");
hRequest = InternetOpenUrl(hSession, lpURL, NULL, 0, INTERNET_FLAG_NO_CACHE_WRITE, NULL);
if (hRequest== NULL) {
printf_s("InternetOpenUrl failed. E%u\n", GetLastError());
break;
}
DWORD dwTimeout = 3000; // 3s
bRet = InternetSetOption(hRequest, INTERNET_OPTION_CONNECT_TIMEOUT, &dwTimeout, sizeof(dwTimeout));
if (!bRet) {
printf("InternetSetOption CONNECT_TIMEOUT Error: %d\n", GetLastError());
break;
}
bRet = InternetSetOption(hRequest, INTERNET_OPTION_SEND_TIMEOUT, &dwTimeout, sizeof(dwTimeout));
if (!bRet) {
printf("InternetSetOption SEND_TIMEOUT Error: %d\n", GetLastError());
break;
}
bRet = InternetSetOption(hRequest, INTERNET_OPTION_