MFC HTTP GET 请求
//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 请求的更多相关文章
- MFC HTTP(S)请求笔记
GET示例 #include <afxinet.h> #include <iostream> #include <vector> #ifdef _UNICODE # ...
- MFC用户自定义消息
之前做过佳能相机和位移平台的额二次开发,当时遇到一个棘手的问题,就是位移平台如何知道相机已经拍完照了,或者相机如何知道位移平台已经运行到指定位置,当时为了方便采用了定时器来定时检测位移平台的位置,结果 ...
- MFC绘图(转载)
http://www.cppblog.com/bestcln/articles/83189.html 1 几何对象的结构和类 为了使用绘图函数,应该先了解绘图所用到的几种表示几何对象的结构和类.这些结 ...
- IUnknown—COM和MFC
http://www.vckbase.com/index.php/wv/60 问题: 我用MFC编写COM程序有一段时间了,知道如何使用宏和嵌套类,以及如何在嵌套类中处理IUnknown接口,但对IU ...
- MFC Socket
目录 第1章同步TCP通讯 1 1.1 同步通讯与异步通讯 1 1.2 同步通讯类 1 1.3 同步TCP通讯客户端 4 1.3.1 界面 4 1.3.2 界面类声明 ...
- WinInet:HTTPS 请求出现无效的证书颁发机构的处理
首先,微软提供的WinInet库封装了对网页访问的方法. 最近工作需要从https服务器获取数据,都知道https和http网页的访问方式不同,多了一道证书认证程序,这样就使得https在请求起来比h ...
- VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件.(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网 ...
- MFC知识点(DDX_Control 与 DDX_Text ,ON_COMMAND和ON_MESSAGE)
1.DDX_Control 与 DDX_Text 区别 DDX_TEXT()的作用可以理解为把字符串变量和控件的文本(WindowText)关联起来, DDX_Control()的作用可以理解为把变量 ...
- MFC编程入门
一. 什么是MFC? 如果你要建立一个Windows应用程序,应该如何下手? 好的开端是从设计用户界面开始. 首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象.Windows用 ...
随机推荐
- js cookie库
顺手摘下来 /** * @desc 设置Cookie * @param {String} name * @param {String} value * @param {Number} expires ...
- [Jobdu] 题目1370:数组中出现次数超过一半的数字
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2 ...
- ev3dev:c语言开发lego ev3主机
有了ev3dev,真是一且皆有可能啊,最近,看到一个好人,居然做了一个ev3的c库. 激动中... 学习有目标了...,赶紧记录一下. https://github.com/theZiz/ev3c
- cocos2d-x笔记-CCGLProgram
引擎提供了CCGLProgram类来处理着色器相关操作,对当前绘图程序进行了封装,其中使用频率最高的应该是获取着色器程序的接口: const GLuint getProgram(); 该接口返回了当前 ...
- js 三元表达式
JavaScript三元运算符的多种使用技巧 发现代码慢慢写多了的时候会不自觉的将if else 用 三元来替代,仅仅是未了让代码更简洁精辟,当然也有人说用三元可以让你有高潮的感觉.最近在写js 的时 ...
- LeetCode: Add Binary 解题报告
Add BinaryGiven two binary strings, return their sum (also a binary string). For example,a = "1 ...
- js弹出window.open窗口
<html> <head> <SCRIPT LANGUAGE="JavaScript"> function openwin() {OpenWin ...
- Jar/War/Ear等包的作用与区别详解
以客户角度来看,jar文件就是一种封装格式,用户不需要知道jar包中有多少个.class格式的文件及每个文件中的功能与作用,也可以得到相应的访问的结果.java中除了jar格式还有war和ear等包文 ...
- Android笔记(十一)第一个Fragment
Fragment是碎片的意思,能够參照Activity来理解Fragment,由于它们都能包括布局,都有自己的生命周期. 以下我们要让主活动包括两个碎片,而且让两个碎片充满屏幕 1.首先,新建两个碎片 ...
- vue项目引入社交分享插件
vshare 基于百度分享开发的支持VUE2.X的分享插件,为您带来更多的流量!提供多种风格按钮,代码加载更快,引入社会化流量,提升网页抓取速度等优点.github地址:https://github. ...