MFC web文件 CHttpFile的使用初探

news/2024/12/14 16:42:26/

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();
}

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();
}

PS

  1. 第二种方法一定要记得调用SendRequest,不然没有和服务器发生交互,是没有数据的,我就是这个地方坑了半天,也没有异常,百思不解,然后一顿看文档,搜网络才发现问题。
  2. 两种方法对比,我暂时不知道优劣,只能说服自己是第二种方法可以建立连接,然后在连接没有释放期间可以多次访问一下服务器。网络编程理论还是有点欠缺呀。
  3. 这个是为了学习图结构研究的,获取地理位置经纬度绘制图。
  4. 准备一下分析json,我知道有rapidjson。
    在这里插入图片描述

http://www.ppmy.cn/news/1364691.html

相关文章

Sentinel 动态规则扩展

一、规则 Sentinel 的理念是开发者只需要关注资源的定义,当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则: 通过 API 直接修改 (loadRules)通过 DataSource 适配不同数据源修改 手动通过 API 修改比较直观,…

2月27日做题总结(C/C++真题)

今天是2月27日&#xff0c;做题第二天。“躺平”不可取&#xff0c;“躺赢”不可能。让我们一起继续加油&#xff0c;在心里种花&#xff0c;人生才不会荒芜&#xff01; 第一题 32位系统中&#xff0c;如下程序执行的结果是&#xff08;&#xff09; #include <stdio.h&…

ubuntu20.04安装docker及运行

ubuntu20.04安装docker及运行 ubuntu环境版本 Ubuntu Focal 20.04 (LTS) 查看系统版本 rootubuntu20043:~# cat /proc/version Linux version 5.15.0-78-generic (builddlcy02-amd64-008) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0, GNU ld (GNU Binutils for Ubuntu) …

opencv图像腐蚀

腐蚀&#xff08;Erosion&#xff09;是一种形态学图像处理操作&#xff0c;用于移除图像中的小白点、细小物体或者边缘。它通过将结构元素应用于图像上的像素来实现。 以下是opencv实现图像腐蚀的代码 #include <opencv2/highgui/highgui.hpp> #include <opencv2/im…

区块链智能合约开发

一.区块链的回顾 1.区块链 区块链实质上是一个去中心化、分布式的可进行交易的数据库或账本 特征: 去中心化&#xff1a;简单来说&#xff0c;在网络上一个或多个服务器瘫痪的情况下&#xff0c;应用或服务仍然能够持续地运行&#xff0c;这就是去中心化。服务和应用部署在…

jvm面试题目补充

jdk&jre Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK&#xff08;Java Development Kit&#xff09;。 把Java API类库中的Java SE API子集 [1] 和Java虚拟机这两部分统称为JRE&#xff08;Java Runtime Environment&#xff09;&#xff0c;JRE是支持…

MySQL数据库运维第一篇(日志与主从复制)

文章目录 一、错误日志二、二进制日志三、查询日志四、慢查询日志&#xff08;记录超时的sql语句&#xff09;五、主从复制概括六、主从复制原理七、搭建主从复制八、主从复制的测试 在这篇深入的技术文章中&#xff0c;作者将以明晰透彻的方式详细介绍MySQL数据库中关键的日志…

【论文阅读】基于人工智能目标检测与跟踪技术的过冷流沸腾气泡特征提取

Bubble feature extraction in subcooled flow boiling using AI-based object detection and tracking techniques 基于人工智能目标检测与跟踪技术的过冷流沸腾气泡特征提取 期刊信息&#xff1a;International Journal of Heat and Mass Transfer 2024 级别&#xff1a;EI检…