2010年5月27日 星期四

Qt Http Get 簡單實作

現在網路上很多資料可以直接上網取得最新的資訊
也有很多網站提供API可以使用
而使用方法大都是利用http直接存取
http Get的方式就是一種
一般最簡單的用法就是之前提到Google 天氣API那樣直接接在網址後面就可以了
像http://www.google.com/ig/api?weather=,,,22625108,120308954
可以取得天氣的資訊
那在weather就是一個變數而後面的,,,22625108,120308954是給這變數的值
可以用&接在後面然後加其他的變數
在Qt中要用到HTTP就需要include < QHttp > 和 < QUrl > 以及 < QFile >
簡單的範例如下

//QUrl 用來設定網址內容
QUrl url;
//輸入網址
url = QUrl("http://www.google.com/ig/api");
//加入變數和值
url.addQueryItem("weather",",,,22625108,120308954");
//QFileInfo檔案資訊(用來取得輸入網址後面的名稱)若自定名稱就不需要
QFileInfo fileInfo(url.path());
QString fileName = fileInfo.fileName();
if (fileName.isEmpty()) {
fileName = "index.html";
}
//QFile檔案(用來儲存得到的網頁內容)
file = new QFile(fileName);
if (!file->open(QIODevice::WriteOnly)) {
qDebug()<<"Unable to save the file";
delete file;
file = 0;
return;
}
//QHttp用來做Http的Connection
http = new QHttp(this);
//連結完成的事件...另有很多其他事件可用如狀態變更、連線、傳輸進度等
connect(http,SIGNAL(done(bool)), this, SLOT(test(bool)));

//設定連接的伺服器和port
http->setHost(url.host(), url.port(80));
//使用HTTP Get command
http->get(url.toString(), file);
//結束這http connection
http->close();

主要的程式就是這一部份其他的部分再依照需求加上即可

沒有留言: