步骤如下:
- cmakelist 当中,增加如下配置
- 引入包
- 访问远端api
- 解析返回的数据
- cmakelist 当中,增加如下配置,作用是引入Network库。
- 引入包
3、访问远端api
void Form1::on_pushButton_clicked()
{
//根据URL(http://t.weather.itboy.net/api/weather/city/101010100)http请求查询温度信息
QNetworkAccessManager *manager = new QNetworkAccessManager(this); //网络管理器
QNetworkRequest request; //请求
request.setUrl(QUrl("http://t.weather.itboy.net/api/weather/city/101010100")); //设置url
QNetworkReply *reply = manager->get(request); //发送get请求
connect(reply, &QNetworkReply::finished, [=](){ //请求完成后的处理
if(reply->error() == QNetworkReply::NoError)
{
QByteArray data = reply->readAll();
QJsonParseError json_error;
QJsonDocument doc = QJsonDocument::fromJson(data, &json_error); //解析json数据
if(json_error.error == QJsonParseError::NoError)
{
if(doc.isObject())
{
QJsonObject obj = doc.object(); //获取json对象
if(obj.contains("data")) //判断是否包含data
{
QJsonValue value = obj.value("data"); //获取data数据
if(value.isObject())
{
QJsonObject data = value.toObject(); //获取data对象
if(data.contains("wendu")) //判断是否包含wendu
{
QJsonValue wendu = data.value("wendu"); //获取温度
ui->label->setText("温度:" + wendu.toString()); //显示温度
}
}
}
}
}
}
reply->deleteLater(); //释放资源 这个很重要!!!
});
}
这段代码是在Qt框架中,特别是使用Qt Network模块,来实现一个HTTP GET请求以查询指定城市的天气温度信息。这里详细解释每一步的作用和目的:
-
创建
QNetworkAccessManager
实例