MFC CInternetSession OpenUrl 下载文件 防止异常

	HINTERNET hOpen = InternetOpen (NULL,PRE_CONFIG_INTERNET_ACCESS,NULL,  NULL, 0);
	HINTERNET hRequest = InternetOpenUrl (hOpen, m_theUrl,NULL, 0, INTERNET_FLAG_TRANSFER_BINARY,0);
	if( hOpen )
	{
		InternetCloseHandle(hOpen);
	}
	
	if(!hRequest)return FALSE;
	
	InternetCloseHandle(hRequest);

	CInternetSession session;
	CInternetFile* remoteFile =(CInternetFile*)session.OpenURL(
		m_theUrl,1,
		INTERNET_FLAG_TRANSFER_BINARY|
		INTERNET_FLAG_DONT_CACHE);
	if(!remoteFile)
	{
		remoteFile->Close();
		delete remoteFile;
		session.Close();
		return FALSE;
	}
	DWORD statusCode;
	((CHttpFile *)remoteFile)->QueryInfoStatusCode(statusCode);
	if (statusCode==404)return FALSE;
	
	CFile localFile;//MZ?
	if(localFile.Open(localFilename,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary,NULL))
	{
		int readlen = -1;
		char buf[1024];
		while(1)
		{
			readlen = remoteFile->Read(buf,1024);
			if(readlen == 0)
			{
				break;
			}
			localFile.Write(buf,readlen);
			ZeroMemory(buf,1024);
		}
		localFile.Close();
	}
	
	remoteFile->Close();
	session.Close();
	delete remoteFile;

使用 InternetOpen 和 InternetOpenUrl来判断 Url是否存在

否则直接OpenUlr会造成异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值