//HTTP GET 下载文件
CInternetSession *pInetSession = new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);
CHttpConnection *pHttpConn = NULL;
CHttpFile *pHttpFile = NULL;
CString strUrl;
DWORD dwServiceType;
CString strServer, strObj, strUser, strPwd;
INTERNET_PORT nPort; strUrl = "http://www.tdx.com.cn/products/data/data/dbf/base.zip";
if (!AfxParseURLEx(strUrl, dwServiceType, strServer, strObj, nPort, strUser, strPwd, ICU_NO_ENCODE))
{
MessageBox("下载地址有误!...");
return;
}
if (!pHttpConn)
{
pHttpConn = pInetSession->GetHttpConnection(strServer, INTERNET_INVALID_PORT_NUMBER, "ELIMINATOR77","PANZER76");
}
int nVal = 6000;
pInetSession->SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, &nVal, sizeof(nVal));
pHttpFile = pHttpConn->OpenRequest("GET",strObj);
try
{
MessageBox(_T("正在连接到网站..."));
pHttpFile->SendRequest();
}
catch (CInternetException *pEx)
{
MessageBox("下载出错...");
pEx->Delete();
delete pHttpFile;
return;
}
DWORD dwRet;
pHttpFile->QueryInfoStatusCode(dwRet);
if (dwRet != HTTP_STATUS_OK)
{
CString error;
error.Format("出错了,错误码:%d",dwRet);
AfxMessageBox(error);
return;
}
char szPath[100]={0};
GetCurrentDirectory(sizeof(szPath),szPath);
CString HomePath;
HomePath = szPath;
int p1 = HomePath.ReverseFind('/');
int p2 = HomePath.ReverseFind('\\');
int pos = max(p1,p2);
if (pos > 0)
{
HomePath = HomePath.Left(pos+1);
}
CString filePath;
filePath.Format("%s%s",HomePath,"base.zip");
//TCHAR* pszFileName = _T("Open_File.dat");
CFile tempFile;
CFileException fe;
//CFile tempFile(filePath, CFile::modeCreate|CFile::modeWrite);
if (!tempFile.Open(filePath, CFile::modeCreate|CFile::modeWrite, &fe))
{
DWORD erno = GetLastError();
CString error;
TCHAR szErr[512]={0};
fe.GetErrorMessage(szErr,sizeof(szErr));
error.Format("不能将下载文件存盘:%s",szErr);
AfxMessageBox(error);
//return;
}
int numread = 0;
char buf[512]={0};
while ((numread=pHttpFile->Read(buf,sizeof(buf)-1)) > 0)
{
tempFile.Write(buf,numread);
}
tempFile.Close();
pInetSession->Close();
delete pInetSession;
pHttpFile->Close();
delete pHttpFile;

  

MFC HTTP GET 请求的更多相关文章

  1. MFC HTTP(S)请求笔记

    GET示例 #include <afxinet.h> #include <iostream> #include <vector> #ifdef _UNICODE # ...

  2. MFC用户自定义消息

    之前做过佳能相机和位移平台的额二次开发,当时遇到一个棘手的问题,就是位移平台如何知道相机已经拍完照了,或者相机如何知道位移平台已经运行到指定位置,当时为了方便采用了定时器来定时检测位移平台的位置,结果 ...

  3. MFC绘图(转载)

    http://www.cppblog.com/bestcln/articles/83189.html 1 几何对象的结构和类 为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类.这些结 ...

  4. IUnknown—COM和MFC

    http://www.vckbase.com/index.php/wv/60 问题: 我用MFC编写COM程序有一段时间了,知道如何使用宏和嵌套类,以及如何在嵌套类中处理IUnknown接口,但对IU ...

  5. MFC Socket

    目录 第1章同步TCP通讯    1 1.1 同步通讯与异步通讯    1 1.2 同步通讯类    1 1.3 同步TCP通讯客户端    4 1.3.1 界面    4 1.3.2 界面类声明   ...

  6. WinInet:HTTPS 请求出现无效的证书颁发机构的处理

    首先,微软提供的WinInet库封装了对网页访问的方法. 最近工作需要从https服务器获取数据,都知道https和http网页的访问方式不同,多了一道证书认证程序,这样就使得https在请求起来比h ...

  7. VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程

      开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网 ...

  8. MFC知识点(DDX_Control 与 DDX_Text ,ON_COMMAND和ON_MESSAGE)

    1.DDX_Control 与 DDX_Text 区别 DDX_TEXT()的作用可以理解为把字符串变量和控件的文本(WindowText)关联起来, DDX_Control()的作用可以理解为把变量 ...

  9. MFC编程入门

    一. 什么是MFC? 如果你要建立一个Windows应用程序,应该如何下手? 好的开端是从设计用户界面开始. 首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象.Windows用 ...

随机推荐

  1. ps photoshop cc 2015 Extract Assets(生成器)切图大法

    Extract Assets 是 Photoshop CC 2014 版本新增的一个特性,主要用来快速导出适用于 Web 和屏幕设计的资源,你可以用它导出 JPG.PNG.GIF,甚至是 SVG 图像 ...

  2. Java总结篇系列:Java多线程(四)

    ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地 ...

  3. C++11新特性应用--介绍几个新增的便利算法(用于排序的几个算法)

    继续C++11在头文件algorithm中添加的算法. 至少我认为,在stl的算法中,用到最多的就是sort了,我们不去探索sort的源代码.就是介绍C++11新增的几个关于排序的函数. 对于一个序列 ...

  4. CocoaPods did not set the base configuration of your project 问题解决方式

    今天在使用pod install的时候.出现了 [!] CocoaPods did not set the base configuration of your project because you ...

  5. SQL server插入数据后,如何获取自增长字段的值?

    insert into Tb_People(uname,era,amount) values( '兆周','老年','10000') select @@identity --当运行完插入语句后,执行s ...

  6. C# 获取指定目录下所有文件信息

    /// <summary> /// 返回指定目录下所有文件信息 /// </summary> /// <param name="strDirectory&quo ...

  7. angular学习笔记(十九)-指令修改dom

    本篇主要介绍angular使用指令修改DOM: 使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器 ...

  8. FZU Problem 2105 Digits Count

    Problem Description Given N integers A={A[0],A[1],...,A[N-1]}. Here we have some operations: Operati ...

  9. PHP5.4新特性之上传进度支持Upload progress

    在PHP5.4版本当中给我们提供了好用的特性,上传进度的支持,我们可以配合Ajax动态获取SESSION当中的上传进度: 在使用这一特性之前,需要现在php.ini文件当中进行相应的设置:   1 2 ...

  10. RSS是什么,RSS怎么玩,RSS原理是什么 (zhuan)

    http://www.cjjjs.com/paper/gzsh/201622721397372.aspx *********************************************** ...