getweather.cpp 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "getweather.h"
  2. GetWeather::GetWeather(QObject *parent) : QObject(parent)
  3. {
  4. manager = new QNetworkAccessManager(this);
  5. connect(manager,&QNetworkAccessManager::finished,this,&GetWeather::getData);
  6. lat = "31.2145";
  7. lng = "121.4218";
  8. }
  9. void GetWeather::setPoint(QString at, QString ng)
  10. {
  11. lat = at;
  12. lng = ng;
  13. }
  14. void GetWeather::sendRequest()
  15. {
  16. QString header = QString("APPCODE %1").arg("0f2b7fce6e104ba8835358b7b59b4fb6");
  17. 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));
  18. req->setRawHeader("Authorization", header.toLocal8Bit());
  19. req->setRawHeader("Accept","*/*");
  20. config = req->sslConfiguration();
  21. config.setPeerVerifyMode(QSslSocket::VerifyNone);
  22. config.setProtocol(QSsl::TlsV1_0OrLater);
  23. req->setSslConfiguration(config);
  24. reply = manager->get(*req);
  25. }
  26. void GetWeather::getData(QNetworkReply*)
  27. {
  28. // QTextCodec *tc = QTextCodec::codecForName("UTF-8");
  29. QJsonParseError json_error;
  30. reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
  31. reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
  32. if(reply->error()==QNetworkReply::NoError){
  33. QByteArray data = reply->readAll();
  34. QJsonDocument jsonDoc(QJsonDocument::fromJson(data,&json_error));
  35. if(json_error.error==QJsonParseError::NoError){
  36. QJsonObject root = jsonDoc.object();
  37. if((!root.value("showapi_res_body").isUndefined())&&(!root.value("showapi_res_body").isNull())){
  38. QJsonObject body = root.value("showapi_res_body").toObject();
  39. if((!body.value("f1").isUndefined())&&(!body.value("f1").isNull())){
  40. QJsonObject f1 = body.value("f1").toObject();
  41. if((!f1.value("day_weather").isUndefined())&&(!f1.value("day_weather").isNull())
  42. &&(!f1.value("day_weather_code").isUndefined())&&(!f1.value("day_weather_code").isNull())
  43. &&(!f1.value("night_weather").isUndefined())&&(!f1.value("night_weather").isNull())
  44. &&(!f1.value("night_weather_code").isUndefined())&&(!f1.value("night_weather_code").isNull())
  45. &&(!f1.value("sun_begin_end").isUndefined())&&(!f1.value("sun_begin_end").isNull())
  46. &&(!f1.value("day_air_temperature").isUndefined())&&(!f1.value("day_air_temperature").isNull())
  47. &&(!f1.value("night_air_temperature").isUndefined())&&(!f1.value("night_air_temperature").isNull())
  48. ){
  49. QString sun_begin_end = f1.value("sun_begin_end").toString();
  50. int cur = sun_begin_end.indexOf("|");
  51. emit get_weather(
  52. f1.value("day_weather").toString(),
  53. f1.value("day_weather_code").toString(),
  54. f1.value("night_weather").toString(),
  55. f1.value("night_weather_code").toString(),
  56. sun_begin_end.mid(0,cur),sun_begin_end.mid(cur+1),
  57. f1.value("day_air_temperature").toString(),
  58. f1.value("night_air_temperature").toString());
  59. }
  60. }
  61. }
  62. }
  63. }
  64. }