×
Namespaces

Variants
Actions
(Difference between revisions)

How to do HTTP Get and Post using Qt

From Nokia Developer Wiki
Jump to: navigation, search
somnathbanik (Talk | contribs)
somnathbanik (Talk | contribs)
Line 225: Line 225:
 
=Reference Links=
 
=Reference Links=
  
[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]
+
*See also [http://doc.qt.nokia.com/4.7/network-http.html HTTP Example]

Revision as of 17:04, 19 May 2011

Article Metadata
Tested with
Devices(s): Nokia 5800 XpressMusic,Nokia N97, Nokia E72, Nokia N8
Compatibility
Platform(s): Qt (tested Qt 4.7 Symbian^3)
Symbian
Article
Keywords: QNetworkAccessManager,QNetworkReply,QNetworkRequest,QUrl
Created: (25 Mar 2010)
Last edited: somnathbanik (19 May 2011)


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

capability required

  • NetworkServices

UI design (.ui file)

The below screenshot shows the ui design file.

QtGetPost3.JPG

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.


QtGetPost1.jpg

  • Screenshot after user has clicked the get button.


QtGetPost2.jpg

  • Screenshot after user has clicked the post button.


QtGetPost4.jpg


Sample Application


Reference Links

666 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×