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。
相关推荐
BillKu3 分钟前
node.js、npm相关知识
前端·npm·node.js
靠近彗星3 分钟前
基于 Vue + Django + MySQL 实现个人博客/CMS系统
前端·vue.js·python·mysql·django
予安灵10 分钟前
《白帽子讲 Web 安全》之服务端请求伪造(SSRF)深度剖析:从攻击到防御
前端·安全·web安全·网络安全·安全威胁分析·ssrf·服务端请求伪造
锋行天下19 分钟前
WebSocket 即时通讯前后端设计和基于token的鉴权
前端·后端
赤秀22 分钟前
C++模板初阶
开发语言·c++
树上有只程序猿28 分钟前
前端方面移动端适配方法,减少兼容性问题
前端
学吧别真挂了33 分钟前
正则表达式从入门到飞升:覆盖90%前端场景的秘籍
前端·javascript·正则表达式
森叶37 分钟前
利用 Chrome devTools Source Override 实现JS逆向破解案例
前端·javascript·chrome devtools
welkin39 分钟前
KMP 个人理解
前端·算法
用户905614931522241 分钟前
Flutter开发入门总结
前端