获取重定向后的url

这个功能并不常用,有时候自己访问的网址经常会跳转到其他网页,如果想做个记录,这个功能还是需要的。

#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输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值