• MFC web文件 CHttpFile的使用初探


    MFC CHttpFile的使用

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

    OpenURL

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

    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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    SendRequest方式

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

    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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    PS

    1. 第二种方法一定要记得调用SendRequest,不然没有和服务器发生交互,是没有数据的,我就是这个地方坑了半天,也没有异常,百思不解,然后一顿看文档,搜网络才发现问题。
    2. 两种方法对比,我暂时不知道优劣,只能说服自己是第二种方法可以建立连接,然后在连接没有释放期间可以多次访问一下服务器。网络编程理论还是有点欠缺呀。
    3. 这个是为了学习图结构研究的,获取地理位置经纬度绘制图。
    4. 准备一下分析json,我知道有rapidjson。
      在这里插入图片描述
  • 相关阅读:
    k8s--基础--25.4--Helm--部署
    android studio安卓模拟器高德SDK定位网络连接异常
    jar包做成Windows Service 服务,不能访问网络映射磁盘
    redis之分片集群
    全志A40i开发板(4核ARM Cortex-A7)测评合集——Qt性能测试
    0基础学习VR全景平台篇第113篇:矫正拉直全景图 - PTGui Pro教程
    Unity中 Start和Awake的区别
    第一期 | 整洁,从桌面开始
    WPF自定义快捷命令
    linux搭建单机ES,集成ik分词器,文本抽取,Kibana可视化平台
  • 原文地址:https://blog.csdn.net/shiyongfu19890308/article/details/136333813