//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. Spring注解运行时抛出null

    关于Spring的注解其实不难,大致需要以下几个流程: 一.配置Spring的注解支持 <?xml version="1.0" encoding="UTF-8&qu ...

  2. Xcode6:解决_NSURLAuthenticationMethodServerTrust异常问题

    一.在使用Xcode6进行执行项目时.发现程序直接Crash了,控制台信息例如以下: dyld: Symbol not found: _NSURLAuthenticationMethodServerT ...

  3. linux怎么查看一个文件夹的大小

    linux查看一个文件夹的大小的命令为: -lh 该文件夹的完整路径 例,查询/var文件夹的大小: -lh /var du 递归查询该路径下所有文件的大小(若不加任何参数,则显示文件夹内的所有文件, ...

  4. MarkDown的vim插件安装

    作用:可以使markdown语法高亮.1.安装.使用pathogen插件管理.    cd ~/.vim/bundle    git clone https://github.com/plasticb ...

  5. c语言常量指针赋值给变量指针导致警告

    常量指针定义:常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针.指针指向的对象是常量,那么这个对象不能被更改.常量指 ...

  6. linux下查看doc在线帮助文件

    常看到某个linux下的工具,有带有doc结尾的文件,但是新手不知道如何查看. 我一番查找,终于知道了... 比如:ipython这个软件,在ubuntu里面,有ipython-doc的一个包. 安装 ...

  7. 每日英语:In Digital Era, What Does 'Watching TV' Even Mean?

    We spend a full five hours and 16 minutes a day in front of a screen, and that's without even turnin ...

  8. 部署hadoop2.7.2 集群 基于zookeeper配置HDFS HA+Federation

    转自:http://www.2cto.com/os/201605/510489.html hadoop1的核心组成是两部分,即HDFS和MapReduce.在hadoop2中变为HDFS和Yarn.新 ...

  9. SharePoint自动化系列——Solution auto-redeploy using Selenium(C#)

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 本来的想法是做一个可以自动卸载并且部署新solution到SharePoint farm的tool ...

  10. Error reading field 'throttle_time_ms': java.nio.BufferUnderflowException

    可能出现的问题: ERROR o.a.k.c.p.i.Sender – Uncaught error in kafka producer I/O thread: org.apache.kafka.co ...