How to do HTTP Get and Post using Qt
hamishwillee
(Talk | contribs) m (Text replace - "Category:MeeGo" to "Category:MeeGo Harmattan") |
hamishwillee
(Talk | contribs) m (Text replace - "<code cpp>" to "<code cpp-qt>") |
||
| (One intermediate revision by one user not shown) | |||
| Line 1: | Line 1: | ||
[[Category:Networking]][[Category:Qt]] | [[Category:Networking]][[Category:Qt]] | ||
| − | {{ArticleMetaData | + | {{ArticleMetaData <!-- v1.2 --> |
| − | | | + | |sourcecode= [[Media:HttpGet&Post.zip]] |
| − | | | + | |installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) --> |
|devices= Nokia 5800 XpressMusic,Nokia N97, Nokia E72, Nokia N8 | |devices= Nokia 5800 XpressMusic,Nokia N97, Nokia E72, Nokia N8 | ||
| − | | | + | |sdk= <!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) --> |
| + | |platform= Qt (tested Qt 4.7 Symbian^3) | ||
| + | |devicecompatability= <!-- Compatible devices (e.g.: All* (must have GPS) ) --> | ||
| + | |dependencies= <!-- Any other/external dependencies e.g.: Google Maps Api v1.0 --> | ||
| + | |signing= <!-- Empty or one of Self-Signed, DevCert, Manufacturer --> | ||
| + | |capabilities= <!-- Capabilities required by the article/code example (e.g. Location, NetworkServices. --> | ||
| + | |keywords= QNetworkAccessManager,QNetworkReply,QNetworkRequest,QUrl | ||
| + | |language= <!-- Language category code for non-English topics - e.g. Lang-Chinese --> | ||
| + | |translated-by= <!-- [[User:XXXX]] --> | ||
| + | |translated-from-title= <!-- Title only --> | ||
| + | |translated-from-id= <!-- Id of translated revision --> | ||
| + | |review-by= <!-- After re-review: [[User:username]] --> | ||
| + | |review-timestamp= <!-- After re-review: YYYYMMDD --> | ||
| + | |update-by= <!-- After significant update: [[User:username]]--> | ||
| + | |update-timestamp= <!-- After significant update: YYYYMMDD --> | ||
| + | |creationdate= 20100325 | ||
| + | |author= [[User:Gaba88]] | ||
| + | <!-- The following are not in current metadata --> | ||
|subcategory= Networking | |subcategory= Networking | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
}} | }} | ||
| Line 41: | Line 48: | ||
= Header File = | = Header File = | ||
| − | <code cpp> | + | <code cpp-qt> |
#ifndef MAINWINDOW_H | #ifndef MAINWINDOW_H | ||
#define MAINWINDOW_H | #define MAINWINDOW_H | ||
| Line 84: | Line 91: | ||
= Source File = | = Source File = | ||
| − | <code cpp> | + | <code cpp-qt> |
#include "mainwindow.h" | #include "mainwindow.h" | ||
#include "ui_mainwindow.h" | #include "ui_mainwindow.h" | ||
| Line 235: | Line 242: | ||
*[http://doc.trolltech.com/4.6/qnetworkaccessmanager.html QNetworkAccessManager] | *[http://doc.trolltech.com/4.6/qnetworkaccessmanager.html QNetworkAccessManager] | ||
*See also [http://doc.qt.nokia.com/4.7/network-http.html HTTP Example][[Category:MeeGo Harmattan]] [[Category:Symbian]] | *See also [http://doc.qt.nokia.com/4.7/network-http.html HTTP Example][[Category:MeeGo Harmattan]] [[Category:Symbian]] | ||
| + | [[Category:Code Examples]] | ||
Latest revision as of 04:17, 11 October 2012
Article Metadata
Code Example
Source file: Media:HttpGet&Post.zip
Tested with
Devices(s): Nokia 5800 XpressMusic,Nokia N97, Nokia E72, Nokia N8
Compatibility
Platform(s): Qt (tested Qt 4.7 Symbian^3)
Article
Keywords: QNetworkAccessManager,QNetworkReply,QNetworkRequest,QUrl
Created: gaba88
(25 Mar 2010)
Last edited: hamishwillee
(11 Oct 2012)
Contents |
Overview
This article is a basic QWidget application which performs HTTP GET and POST for a user specified URL.
This is a very basic article this can be extended to suite the developers need. Note that it can only be used in portrait mode - it does not scale properly when rotated.
Prerequisite
- Install the Qt SDK
capability required
- NetworkServices
UI design (.ui file)
The below screenshot shows the ui design file.
Header File
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QMessageBox>
#include<QByteArray>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
protected:
void changeEvent(QEvent *e);
private slots:
void finished(QNetworkReply *reply);
void DoHttpGet();
void activateGetWidgets();
void HideWidgets();
void clearWidgets();
void activatePostWidgets();
private:
Ui::MainWindow *ui;
QNetworkAccessManager *nam;
};
#endif // MAINWINDOW_H
Source File
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
nam = new QNetworkAccessManager(this);
HideWidgets();
connect(ui->getButton,SIGNAL(clicked()),this,SLOT(activateGetWidgets()));
connect(ui->submitButton,SIGNAL(clicked()),this,SLOT(DoHttpGet()));
connect(ui->resetButton,SIGNAL(clicked()),this,SLOT(clearWidgets()));
connect(nam,SIGNAL(finished(QNetworkReply*)),this,SLOT(finished(QNetworkReply*)));
connect(ui->postButton,SIGNAL(clicked()),this,SLOT(activatePostWidgets()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::changeEvent(QEvent *e)
{
QMainWindow::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
void MainWindow::activateGetWidgets()
{
ui->urlLabel->setHidden(false);
ui->urlLine->setHidden(false);
ui->submitButton->setHidden(false);
ui->textBrowser->setHidden(false);
ui->responseTitleLabel->setHidden(false);
ui->getButton->setHidden(true);
ui->postButton->setHidden(true);
}
void MainWindow::activatePostWidgets()
{
ui->dataLabel->setHidden(false);
ui->dataLine->setHidden(false);
activateGetWidgets();
}
void MainWindow::finished(QNetworkReply *reply)
{
if(reply->error() == QNetworkReply::NoError)
{
ui->textBrowser->setText(reply->readAll());
}
else
{
ui->textBrowser->setText(reply->errorString());
}
}
void MainWindow::DoHttpGet()
{
ui->resetButton->setHidden(false);
QString url = ui->urlLine->text();
QString data = ui->dataLine->text();
QByteArray postData;
postData.append(data.toAscii());
if(postData.isEmpty() == true)
{
nam->get(QNetworkRequest(QUrl(url)));
}
else
{
nam->post(QNetworkRequest(QUrl(url)),postData);
}
}
void MainWindow::HideWidgets()
{
ui->urlLabel->setHidden(true);
ui->urlLine->setHidden(true);
ui->dataLabel->setHidden(true);
ui->dataLine->setHidden(true);
ui->submitButton->setHidden(true);
ui->responseTitleLabel->setHidden(true);
ui->textBrowser->setHidden(true);
ui->resetButton->setHidden(true);
}
void MainWindow::clearWidgets()
{
ui->urlLabel->setHidden(true);
ui->urlLine->setHidden(true);
ui->dataLabel->setHidden(true);
ui->dataLine->setHidden(true);
ui->submitButton->setHidden(true);
ui->responseTitleLabel->setHidden(true);
ui->textBrowser->setHidden(true);
ui->resetButton->setHidden(true);
ui->urlLine->clear();
ui->textBrowser->clear();
ui->dataLine->clear();
ui->getButton->setHidden(false);
ui->postButton->setHidden(false);
}
Output Screenshots
- Initial Screen Asking the user to select and http get or post.
- Screenshot after user has clicked the get button.
- Screenshot after user has clicked the post button.
Sample Application
- A sample Qt Application can be downloaded from this File:HttpGet&Post.zip
Reference Links
- QNetworkAccessManager
- See also HTTP Example




