#include "getweather.h" GetWeather::GetWeather(QObject *parent) : QObject(parent) { manager = new QNetworkAccessManager(this); connect(manager,&QNetworkAccessManager::finished,this,&GetWeather::getData); lat = "31.2145"; lng = "121.4218"; } void GetWeather::setPoint(QString at, QString ng) { lat = at; lng = ng; } void GetWeather::sendRequest() { QString header = QString("APPCODE %1").arg("0f2b7fce6e104ba8835358b7b59b4fb6"); req = new QNetworkRequest(QString("https://weather01.market.alicloudapi.com/gps-to-weather?from=5&lat=%1&lng=%2&need3HourForcast=0&needAlarm=0&needHourData=0&needIndex=0&needMoreDay=0").arg(lat).arg(lng)); req->setRawHeader("Authorization", header.toLocal8Bit()); req->setRawHeader("Accept","*/*"); config = req->sslConfiguration(); config.setPeerVerifyMode(QSslSocket::VerifyNone); config.setProtocol(QSsl::TlsV1_0OrLater); req->setSslConfiguration(config); reply = manager->get(*req); } void GetWeather::getData(QNetworkReply*) { // QTextCodec *tc = QTextCodec::codecForName("UTF-8"); QJsonParseError json_error; reply->attribute(QNetworkRequest::HttpStatusCodeAttribute); reply->attribute(QNetworkRequest::RedirectionTargetAttribute); if(reply->error()==QNetworkReply::NoError){ QByteArray data = reply->readAll(); QJsonDocument jsonDoc(QJsonDocument::fromJson(data,&json_error)); if(json_error.error==QJsonParseError::NoError){ QJsonObject root = jsonDoc.object(); if((!root.value("showapi_res_body").isUndefined())&&(!root.value("showapi_res_body").isNull())){ QJsonObject body = root.value("showapi_res_body").toObject(); if((!body.value("f1").isUndefined())&&(!body.value("f1").isNull())){ QJsonObject f1 = body.value("f1").toObject(); if((!f1.value("day_weather").isUndefined())&&(!f1.value("day_weather").isNull()) &&(!f1.value("day_weather_code").isUndefined())&&(!f1.value("day_weather_code").isNull()) &&(!f1.value("night_weather").isUndefined())&&(!f1.value("night_weather").isNull()) &&(!f1.value("night_weather_code").isUndefined())&&(!f1.value("night_weather_code").isNull()) &&(!f1.value("sun_begin_end").isUndefined())&&(!f1.value("sun_begin_end").isNull()) &&(!f1.value("day_air_temperature").isUndefined())&&(!f1.value("day_air_temperature").isNull()) &&(!f1.value("night_air_temperature").isUndefined())&&(!f1.value("night_air_temperature").isNull()) ){ QString sun_begin_end = f1.value("sun_begin_end").toString(); int cur = sun_begin_end.indexOf("|"); emit get_weather( f1.value("day_weather").toString(), f1.value("day_weather_code").toString(), f1.value("night_weather").toString(), f1.value("night_weather_code").toString(), sun_begin_end.mid(0,cur),sun_begin_end.mid(cur+1), f1.value("day_air_temperature").toString(), f1.value("night_air_temperature").toString()); } } } } } }