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。
相关推荐
超级大只老咪4 分钟前
HTML学习路线
前端·学习·html
゜ eVer ㄨ7 分钟前
React学习第三天——生命周期
前端·学习·react.js
摆烂且佛系9 分钟前
CSS元素的总宽度计算规则
前端·css
对岸住着星星13 分钟前
vue3+ts实现拖拽缩放,全屏
前端·javascript
aesthetician23 分钟前
@tanstack/react-query:React 服务器状态管理与数据同步解决方案
服务器·前端·react.js
Nan_Shu_6141 小时前
学习:uniapp全栈微信小程序vue3后台(28)
前端·学习·微信小程序·小程序·uni-app
珍宝商店1 小时前
原生 JavaScript 方法实战指南
开发语言·前端·javascript
蓝莓味的口香糖1 小时前
【企业微信】VUE项目在企微中自定义转发内容
前端·vue.js·企业微信
IT_陈寒1 小时前
告别低效!用这5个Python技巧让你的数据处理速度提升300% 🚀
前端·人工智能·后端
—Qeyser1 小时前
Laravel + UniApp AES加密/解密
前端·uni-app·laravel