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