1. 程式人生 > >QT 天氣查詢(待續

QT 天氣查詢(待續

QT 天氣查詢

網路部分

利用網路,獲取當前地區溫度 1、網頁解析 2、json解析 3、選擇各種地區

本人例子裡面有需要openssl來支援,當然也可以跳過。

/* json 部分 {“results”:[{“location”:{“id”:“WS0E9D8WN298”,“name”:“廣州”,“country”:“CN”,“path”:“廣州,廣州,廣東,中國”,“timezone”:“Asia/Shanghai”,“timezone_offset”:"+08:00"},“now”:{“text”:“多雲”,“code”:“4”,“temperature”:“20”},“last_update”:“2018-10-18T21:10:08+08:00”}]} */

/*html 部分 < ArrayOfString xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns=“http://WebXml.com.cn/”> < string>廣東< /string> < string>廣州< /string> < string>59287< /string> < string>59287.jpg< /string> < string>2018/10/18 21:07:09< /string> < string>20℃/24℃< /string> < string>10月18日 多雲< /string> < string>無持續風向小於3級< /string> < string>1.gif< /string>< string>1.gif< /string> < string>今日天氣實況:氣溫:21℃;風向/風力:東北風 1級;溼度:78%;紫外線強度:弱。空氣質量:中。< /string> < string> 紫外線指數:弱,輻射較弱,塗擦SPF12-15、PA+護膚品。 健臻·血糖指數:易波動,血糖易波動,注意監測。 穿衣指數:舒適,建議穿長袖襯衫單褲等服裝。 洗車指數:較適宜,無雨且風力較小,易保持清潔度。 空氣汙染指數:中,易感人群應適當減少室外活動。 < /string> < string>20℃/25℃< /string> < string>10月19日 多雲< /string> < string>無持續風向小於3級< /string> < string>1.gif< /string> < string>1.gif< /string> < string>19℃/26℃< /string> < string>10月20日 多雲< /string> < string>無持續風向小於3級 < string>1.gif< /string> < string>1.gif< /string> < string> 廣州是廣東省的省會,是中國南方最大的海濱城市,廣州位於東經113。17,北緯23。8

,地處中國大陸南部,廣東省南部,珠江三角洲北緣。廣州臨南海,鄰近香港特別行政區,是中國通往世界的南大門,廣州屬丘陵地帶。中國的第三大河----珠江從廣州市中心穿流而過。廣州是一座歷史文化名城。相傳在遠古時候,曾有五位仙人,身穿五色彩服、騎著嘴銜稻穗的五色仙羊降臨此地,把稻穗贈給百姓,祝願這裡永無饑荒。從此,廣州便有“羊城”、“穗城”的美稱,“五羊”也成為廣州的象徵。廣州既是中國也是世界名城,又是一座古城,因歷史上有五羊仙子降臨獻稻穗的故事,廣州又稱為“羊城”和“穗城”,簡稱“穗”;廣州一年四季如春、繁花似錦,除夕迎春花市聞名海內外,故又有“花城”的美譽。廣州地處低緯,屬南亞熱帶季風氣候區。地表接受太陽輻射量較多,同時受季風的影響,夏季海洋暖氣流形成高溫、高溼、多雨的氣候;冬季北方大陸冷風形成低溫、乾燥、少雨的氣候。年平均氣溫為21.4-21.9度,年降雨量平均為1623.6-1899.8mm,北部多於南部。1982年,廣州被國務院選定為全國首批歷史文化名城之一,是我國重點旅遊城市。1999年1月,廣州被評為優秀旅遊城市。景觀:白雲山、蓮花山、南海神廟、佛山祖廟、廣州動物園等。 < /string> < /ArrayOfString> */

兩個相比,各有優劣。 我們以第二個為例子. PRO檔案新增 QT += core gui network xml #include

public slots: void getWeather(QNetworkReply *replyweather);//這裡新建個槽,在步驟三的時候要用到 private: QStringList List; QNetworkAccessManager *manger; QSslConfiguration config; QByteArray readalldata; QNetworkRequest request; void Analysisjson(); void Analysisxml(); QString jsonobj(QJsonObject vobj ,QString jsonst );

cpp檔案

manger = new QNetworkAccessManager(this);
connect(manger ,&QNetworkAccessManager::finished,this,&networkget::getWeather);
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1_0);
request.setSslConfiguration(config);
 request.setUrl(QUrl("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=%E5%B9%BF%E5%B7%9E"));//
manger->get(request) ;
void networkget::getWeather(QNetworkReply *replyweather)
{
    readalldata.clear();
  	readalldata = replyweather->readAll();
  	QString str = readalldata;
	QXmlStreamReader reader(readalldata);
    while (!reader.atEnd())
    {
        reader.readNext();
        if (reader.isStartElement())
            {
            if (reader.name() == "string")
            {
            //把所有的資料放進去list。
             List.append(reader.readElementText());
            }
        }
    }
    if (reader.hasError()) {
         qDebug()<<"error";
    }
    	//讀取完畢後,可以把需要的資料顯示出來。
    	    for (int i = 0; i < List.size(); ++i)
           				qDebug() << List.at(i) << endl;
}

結語: 無論的xml,json。都是要解析部分最為重要。也要網站部分的支援。

如果需要openSLL的,可以找找其他文章看看吶。