DAY7-HTTP的访问

219 阅读1分钟

Qt中http协议的使用

http属于应用层的协议,专用于Web网络,包含不加密的http协议和加密的https,https在http的基础上在传输层加了TLS加密层。

http客户端和服务器的通信是通过请求来实现的,http请求分为get和post请求,Qt中提供了支持http传输相关的类。

http请求对象 --------- QNetworkRequest
发送请求通过管理对象 ------- QNetworkAccessManager
http服务器收到请求后应答,QNetworkAccessManager会触发finished信号
    信号中带有QNetworkReplay的参数

Qt默认不支持https,需要手动安装openssl库

安装openssl,安装完成之后安装目录如下

image-20220731150053630

将以上两个库拷贝到Qt安装目录的库文件夹(QT的里的动态库.so结尾的)

image-20220731150058530

www.nowapi.com 注册一个账号,开通天气免费API

将连接中的appkey和sign换成自己账号的数据

api.k780.com/?app=weathe…

Qt中json字符串的解析

json是一个带格式的字符串,用大括号包括,大括号中是key-value的组合,可以嵌套(value可以是json字符串)。Qt提供了QJson类来处理json字符串,用法如下:

1.通过json字符串构造json文本对象
    QJsonDocument doc = QJsonDocument::fromJson(json字符串,错误信息);
2.将json文本对象转换成json对象
    QJsonObject obj = doc.object();
3.在json对象中根据key获取value
    obj.value("key").toString();//转字符串
    obj.value("key").toObject();//转json
    QJsonArray arr = obj.value("key").toArray();//转数组
    arr.at(0) =====> QJsonObject 

http获取图片

通过QPixmap类的成员函数loadFromData从请求返回的数据中构造QPixmap对象

图片要放到上去显示QPixmap