MFC web文件 CHttpFile的使用初探

MFC CHttpFile的使用

两种方式,第一种OpenURL,第二种SendRequest,以前捣鼓过,今天再次整结果发现各种踩坑,好记性不如烂笔头,记录下来。

OpenURL

这种方式简单粗暴,用着舒服。

cpp 复制代码
try
{
	//OpenURL方式 简单粗暴
	CInternetSession session;
	CHttpFile* file = (CHttpFile*)session.OpenURL(_T("https://restapi.amap.com/v3/weather/weatherInfo?key=xxx"));

	//读取数据
	CString content;
	CString temp;
	while (file->ReadString(temp))
	{
		content += temp;
	}

	//使用 注意网络流一般是UTF8 需要转换
	CString convert = CA2T((LPCSTR)content.GetBuffer());
	m_InputEdit.SetWindowText(convert);

	//释放资源
	file->Close();
	session.Close();
	delete file;
}
catch (CInternetException* e)//异常处理
{
	TCHAR sz[1024] = { 0 };
	e->GetErrorMessage(sz, 1024);
	AfxOutputDebugString(sz);
	e->Delete();
}

SendRequest方式

这种方式用着很繁琐,一顿代码控制,心里还是有点疑问,搞这么复杂干甚。

cpp 复制代码
try
{
	//会话方式
	CInternetSession session;
	CHttpConnection* conn = session.GetHttpConnection(_T("restapi.amap.com"));
	CHttpFile* file = conn->OpenRequest(_T("GET"), _T("/v3/weather/weatherInfo?key=xxx"));
	
	//发送请求 关键的一句 和服务器产生交互
	file->SendRequest();
	
	//读取数据
	CString content;
	CString temp;
	while (file->ReadString(temp))
	{
		content += temp;
	}

	//使用 注意网络流一般是UTF8 需要转换
	CString convert = CA2T((LPCSTR)content.GetBuffer());
	m_InputEdit.SetWindowText(convert);

	//释放
	file->Close();
	conn->Close();
	session.Close();

	delete file;
	delete conn;
}
catch (CInternetException* e)//异常处理
{
	TCHAR sz[1024] = { 0 };
	e->GetErrorMessage(sz, 1024);
	AfxOutputDebugString(sz);
	e->Delete();
}

PS

  1. 第二种方法一定要记得调用SendRequest,不然没有和服务器发生交互,是没有数据的,我就是这个地方坑了半天,也没有异常,百思不解,然后一顿看文档,搜网络才发现问题。
  2. 两种方法对比,我暂时不知道优劣,只能说服自己是第二种方法可以建立连接,然后在连接没有释放期间可以多次访问一下服务器。网络编程理论还是有点欠缺呀。
  3. 这个是为了学习图结构研究的,获取地理位置经纬度绘制图。
  4. 准备一下分析json,我知道有rapidjson。
相关推荐
呆萌很2 分钟前
C++ 集合 list 使用
c++
少年姜太公39 分钟前
从零开始详解js中的this(下)
前端·javascript·程序员
哑巴语天雨41 分钟前
React+Vite项目框架
前端·react.js·前端框架
诚丞成1 小时前
计算世界之安生:C++继承的文水和智慧(上)
开发语言·c++
初遇你时动了情1 小时前
react 项目打包二级目 使用BrowserRouter 解决页面刷新404 找不到路由
前端·javascript·react.js
乔峰不是张无忌3301 小时前
【HTML】动态闪烁圣诞树+雪花+音效
前端·javascript·html·圣诞树
鸿蒙自习室1 小时前
鸿蒙UI开发——组件滤镜效果
开发语言·前端·javascript
m0_748250741 小时前
高性能Web网关:OpenResty 基础讲解
前端·openresty
东风吹柳2 小时前
观察者模式(sigslot in C++)
c++·观察者模式·信号槽·sigslot
前端没钱2 小时前
从 Vue 迈向 React:平滑过渡与关键注意点全解析
前端·vue.js·react.js