这个功能并不常用,有时候自己访问的网址经常会跳转到其他网页,如果想做个记录,这个功能还是需要的。
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <WinInet.h>
#pragma comment(lib,"wininet.lib")
HINTERNET hSession=NULL;
void GetRedirectUrl(LPCTSTR url)
{
HINTERNET hRequest=InternetOpenUrl(hSession, url, NULL, 0, INTERNET_FLAG_NO_AUTO_REDIRECT, 0);
TCHAR wbuffer[1024]={0};
DWORD lenWritten=1024;
DWORD index=0;
HttpQueryInfo(hRequest,HTTP_QUERY_LOCATION,wbuffer,&lenWritten,&index);
int bytes = WideCharToMultiByte(CP_ACP,0,wbuffer,-1,NULL,0,NULL,NULL);
char* szBuffer = new char[bytes+1];
ZeroMemory(szBuffer,bytes+1);
WideCharToMultiByte(CP_ACP,0,wbuffer,-1,szBuffer,bytes,NULL,NULL);
InternetCloseHandle(hRequest);
if (strcmpi(szBuffer,"")==0)
{
return;
}
std::cout<<szBuffer<<std::endl;
delete[] szBuffer;
GetRedirectUrl(wbuffer);
}
int _tmain(int argc, _TCHAR* argv[])
{
std::cout<<"start testing..."<<std::endl;
hSession=InternetOpen(_T("HTTP Downloader"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, NULL);
while(true)
{
GetRedirectUrl(_T("http://www.baidu.com"));
Sleep(1000);
}
int wait;
std::cin>>wait;
return 0;
}
HttpQueryInfo(hRequest,HTTP_QUERY_LOCATION,wbuffer,&lenWritten,&index);
这个函数就是用来获取重定向后url的api
因为获取到的是UNICODE,后面转为ANSI输出。
7208

被折叠的 条评论
为什么被折叠?



