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。
相关推荐
不会敲代码11 天前
手写 Zustand:三十分钟带你搞懂状态管理库的核心原理
前端·javascript·源码
神奇的程序员1 天前
重构了自己5年前写的截图插件
前端·javascript·架构
REDcker1 天前
C++变量存储与ELF段布局详解 从const全局到rodata与nm_readelf验证实践
java·c++·面试
UXbot1 天前
一人独立交付 UI + 前端:AI 驱动 UI 设计工具的五大功能模块深度评测
前端·低代码·ui·设计模式·交互
kobesdu1 天前
【ROS2实战笔记-19】ROS2 生命周期节点的启动顺序、状态转换陷阱与热备方案
java·前端·笔记·机器人·ros·ros2
诚实可靠王大锤1 天前
React Native 输入框与按钮焦点冲突解决方案(rn版本0.70.3)
前端·javascript·react native·react.js
kyriewen1 天前
测试妹子让我写单测,我偷偷用AI一天干完一周的活
前端·chatgpt·cursor
2601_957780841 天前
Claude Code 2026年最新部署指南:从环境搭建到技能扩展
前端·人工智能·ai编程·claude
王老师青少年编程1 天前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:合并序列
c++·字符串·csp·高频考点·信奥赛·字符串排序·合并序列
zhangfeng11331 天前
workbuddy 专家 “前端开发师” 结合nvidia-mistral-small-4-119b-2603 项目计划-前端界面开发.md
前端·人工智能·免费