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用 ...
随机推荐
- byte[] 转Hex String
一.一个字符串转byte数组怎么转? byte[] byteArray = String.getBytes(); 二.又想把生成的数组转回字符串怎么办? String covertString = n ...
- xml解析原理一些想法
xml元素解析 <a> <a> <a> </a> <a> </a> </a> <a> </a> ...
- Amoeba软件实现mysql读写分离
一般不用,大公司都是自己程序实现的. 安装amoeba
- linux服务器文件删除空间却未释放
在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink),然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也 ...
- HDU 4952 Poor Mitsui(贪心)
HDU 4957 Poor Mitsui pid=4957" style="">题目链接 思路:利用相邻交换法去贪心就可以.注意容积为0的情况,这是个坑点 代码: ...
- kafka传数据到Flink存储到mysql之Flink使用SQL语句聚合数据流(设置时间窗口,EventTime)
网上没什么资料,就分享下:) 简单模式:kafka传数据到Flink存储到mysql 可以参考网站: 利用Flink stream从kafka中写数据到mysql maven依赖情况: <pro ...
- 如何創建一個自己的 Composer/Packagist 包 (PHP)
如何創建一個自己的 Composer/Packagist 包 首先讓我們踏着歡快的腳步去Github創建一個新庫,這裏取名 composer-car,又歡快的將它克隆到本地: git clone ht ...
- Spring Boot干货系列:(六)静态资源和拦截器处理
Spring Boot干货系列:(六)静态资源和拦截器处理 原创 2017-04-05 嘟嘟MD 嘟爷java超神学堂 前言 本章我们来介绍下SpringBoot对静态资源的支持以及很重要的一个类We ...
- LeetCode: Word Search 解题报告
Word SearchGiven a 2D board and a word, find if the word exists in the grid. The word can be constru ...
- java比较字符串相等
java中String是对象类型,不能使用"=="比较.正确的用法如下: if(A.equals(B)){ //相等 }