Quantum GIS API Documentation  1.8
Public Slots | Signals | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
QgsHttpTransaction Class Reference

HTTP request/response manager that is redirect-aware. More...

#include <qgshttptransaction.h>

List of all members.

Public Slots

void dataStarted (int id)
void dataHeaderReceived (const QHttpResponseHeader &resp)
void dataReceived (const QHttpResponseHeader &resp)
void dataProgress (int done, int total)
void dataFinished (int id, bool error)
void transactionFinished (bool error)
void dataStateChanged (int state)
void networkTimedOut ()
void abort ()
 Aborts the current transaction.

Signals

void setProgress (int done, int total)
 legacy code.
void dataReadProgress (int theProgress)
 Signal for progress update.
void totalSteps (int theTotalSteps)
 Signal for adjusted number of steps.
void statusChanged (QString theStatusQString)
 emit a signal to be caught by qgisapp and display a msg on status bar

Public Member Functions

 QgsHttpTransaction (QString uri, QString proxyHost=QString(), int proxyPort=80, QString proxyUser=QString(), QString proxyPass=QString(), QNetworkProxy::ProxyType proxyType=QNetworkProxy::NoProxy, QString userName=QString(), QString password=QString())
 Constructor.
virtual ~QgsHttpTransaction ()
 Destructor.
void getAsynchronously ()
bool getSynchronously (QByteArray &respondedContent, int redirections=0, const QByteArray *postData=0)
 Gets the response synchronously.
QString responseContentType ()
QString errorString ()
 If an operation returns 0 (e.g.
void setCredentials (const QString &username, const QString &password)
 Set the credentials (username and password)
int networkTimeout () const
 Returns the network timeout in msec.
void setNetworkTimeout (int msec)
 Sets the network timeout in milliseconds.

Static Public Member Functions

static bool applyProxySettings (QHttp &http, const QString &url)
 Apply proxy settings from QSettings to a http object.

Private Member Functions

 QgsHttpTransaction ()
 Default constructor is forbidden.

Private Attributes

QHttp * http
 Indicates the associated QHttp object.
int httpid
 Indicates the QHttp ID.
bool httpactive
 Indicates if the transaction is in progress.
QByteArray httpresponse
QString httpresponsecontenttype
QString httpurl
 The original URL requested for this transaction.
QString httphost
 The host being used for this transaction.
QString httpredirecturl
 If not empty, indicates that the QHttp is a redirect to the contents of this variable.
int httpredirections
 Number of http redirections this transaction has been subjected to.
QTimer * mWatchdogTimer
 Indicates the associated QTimer object - used to detect network timeouts.
QString mError
 The error message associated with the last HTTP error.
QString mUserName
 User name.
QString mPassword
 Password.
int mNetworkTimeoutMsec
 Network timeout in milliseconds.

Detailed Description

HTTP request/response manager that is redirect-aware.

This class extends the Qt QHttp concept by being able to recognise and respond to redirection responses (e.g. HTTP code 302)

Definition at line 36 of file qgshttptransaction.h.


Constructor & Destructor Documentation

QgsHttpTransaction::QgsHttpTransaction ( QString  uri,
QString  proxyHost = QString(),
int  proxyPort = 80,
QString  proxyUser = QString(),
QString  proxyPass = QString(),
QNetworkProxy::ProxyType  proxyType = QNetworkProxy::NoProxy,
QString  userName = QString(),
QString  password = QString() 
)

Constructor.

Note:
userName and password added in 1.1

Definition at line 38 of file qgshttptransaction.cpp.

References mNetworkTimeoutMsec.

Destructor.

Definition at line 66 of file qgshttptransaction.cpp.

References QgsDebugMsg.

Default constructor is forbidden.

Definition at line 61 of file qgshttptransaction.cpp.


Member Function Documentation

void QgsHttpTransaction::abort ( ) [slot]

Aborts the current transaction.

Definition at line 556 of file qgshttptransaction.cpp.

References http.

bool QgsHttpTransaction::applyProxySettings ( QHttp &  http,
const QString &  url 
) [static]

Apply proxy settings from QSettings to a http object.

Returns:
true if proxy settings was applied, false else

Definition at line 499 of file qgshttptransaction.cpp.

Referenced by getSynchronously().

void QgsHttpTransaction::dataFinished ( int  id,
bool  error 
) [slot]

Definition at line 334 of file qgshttptransaction.cpp.

References http, httpactive, httpresponse, mError, and QgsDebugMsg.

Referenced by getSynchronously().

void QgsHttpTransaction::dataHeaderReceived ( const QHttpResponseHeader &  resp) [slot]
void QgsHttpTransaction::dataProgress ( int  done,
int  total 
) [slot]
void QgsHttpTransaction::dataReadProgress ( int  theProgress) [signal]

Signal for progress update.

Referenced by dataProgress(), and getSynchronously().

void QgsHttpTransaction::dataReceived ( const QHttpResponseHeader &  resp) [slot]

Definition at line 290 of file qgshttptransaction.cpp.

References http, and httpresponse.

Referenced by getSynchronously().

void QgsHttpTransaction::dataStarted ( int  id) [slot]

Definition at line 252 of file qgshttptransaction.cpp.

References QgsDebugMsg.

Referenced by getSynchronously().

void QgsHttpTransaction::dataStateChanged ( int  state) [slot]

If an operation returns 0 (e.g.

getSynchronously()), this function returns the text of the error associated with the failure. Interactive users of this provider can then, for example, call a QMessageBox to display the contents.

Definition at line 494 of file qgshttptransaction.cpp.

References mError.

Definition at line 77 of file qgshttptransaction.cpp.

bool QgsHttpTransaction::getSynchronously ( QByteArray &  respondedContent,
int  redirections = 0,
const QByteArray *  postData = 0 
)

Gets the response synchronously.

Note that signals will still be emitted while in this function.

The function returns false if there is an error while getting the response.

Parameters:
[out]respondedContentis replaced with the new content.
[in]redirectionsis used to measure how many http redirections we've been through. Clients typically don't need to set this.
postDatadata to send with the http message. This is only used for HTTP POST. If 0 then the request is done with HTTP GET.
Returns:
true in case of success

Definition at line 84 of file qgshttptransaction.cpp.

References applyProxySettings(), dataFinished(), dataHeaderReceived(), dataProgress(), dataReadProgress(), dataReceived(), dataStarted(), dataStateChanged(), getSynchronously(), http, HTTP_PORT_DEFAULT, httpactive, httphost, httpid, httpredirections, httpredirecturl, httpresponse, httpurl, mError, mNetworkTimeoutMsec, mPassword, mUserName, mWatchdogTimer, networkTimedOut(), QgsDebugMsg, setCredentials(), statusChanged(), and transactionFinished().

Referenced by getSynchronously().

Definition at line 481 of file qgshttptransaction.cpp.

References httpactive, mError, mNetworkTimeoutMsec, and QgsDebugMsg.

Referenced by getSynchronously().

int QgsHttpTransaction::networkTimeout ( ) const [inline]

Returns the network timeout in msec.

Definition at line 99 of file qgshttptransaction.h.

Definition at line 246 of file qgshttptransaction.cpp.

References httpresponsecontenttype.

void QgsHttpTransaction::setCredentials ( const QString &  username,
const QString &  password 
)

Set the credentials (username and password)

Note:
added in 1.1

Definition at line 72 of file qgshttptransaction.cpp.

References mPassword, and mUserName.

Referenced by getSynchronously().

void QgsHttpTransaction::setNetworkTimeout ( int  msec) [inline]

Sets the network timeout in milliseconds.

Definition at line 101 of file qgshttptransaction.h.

void QgsHttpTransaction::setProgress ( int  done,
int  total 
) [signal]

legacy code.

This signal is currently not emitted and only kept for API compatibility

void QgsHttpTransaction::statusChanged ( QString  theStatusQString) [signal]

emit a signal to be caught by qgisapp and display a msg on status bar

Referenced by dataProgress(), dataStateChanged(), and getSynchronously().

void QgsHttpTransaction::totalSteps ( int  theTotalSteps) [signal]

Signal for adjusted number of steps.

Referenced by dataProgress().

void QgsHttpTransaction::transactionFinished ( bool  error) [slot]

Definition at line 383 of file qgshttptransaction.cpp.

References http, httpactive, httpresponse, mError, and QgsDebugMsg.

Referenced by getSynchronously().


Member Data Documentation

QHttp* QgsHttpTransaction::http [private]

Indicates the associated QHttp object.

Note:
We tried to use this as a plain QHttp object but strange things were happening with the signals - therefore we use the "pointer to" instead.

Definition at line 151 of file qgshttptransaction.h.

Referenced by abort(), dataFinished(), dataReceived(), getSynchronously(), and transactionFinished().

Indicates if the transaction is in progress.

Definition at line 161 of file qgshttptransaction.h.

Referenced by dataFinished(), getSynchronously(), networkTimedOut(), and transactionFinished().

QString QgsHttpTransaction::httphost [private]

The host being used for this transaction.

Definition at line 181 of file qgshttptransaction.h.

Referenced by dataStateChanged(), and getSynchronously().

Indicates the QHttp ID.

Definition at line 156 of file qgshttptransaction.h.

Referenced by getSynchronously().

Number of http redirections this transaction has been subjected to.

TODO: Use this as part of a redirection loop detector

Definition at line 196 of file qgshttptransaction.h.

Referenced by getSynchronously().

If not empty, indicates that the QHttp is a redirect to the contents of this variable.

Definition at line 187 of file qgshttptransaction.h.

Referenced by dataHeaderReceived(), and getSynchronously().

QByteArray QgsHttpTransaction::httpresponse [private]

Definition at line 171 of file qgshttptransaction.h.

Referenced by dataHeaderReceived(), and responseContentType().

QString QgsHttpTransaction::httpurl [private]

The original URL requested for this transaction.

Definition at line 176 of file qgshttptransaction.h.

Referenced by dataStateChanged(), and getSynchronously().

QString QgsHttpTransaction::mError [private]

The error message associated with the last HTTP error.

Definition at line 206 of file qgshttptransaction.h.

Referenced by dataFinished(), dataHeaderReceived(), errorString(), getSynchronously(), networkTimedOut(), and transactionFinished().

Network timeout in milliseconds.

Definition at line 219 of file qgshttptransaction.h.

Referenced by dataHeaderReceived(), dataProgress(), dataStateChanged(), getSynchronously(), networkTimedOut(), and QgsHttpTransaction().

QString QgsHttpTransaction::mPassword [private]

Password.

Definition at line 216 of file qgshttptransaction.h.

Referenced by getSynchronously(), and setCredentials().

QString QgsHttpTransaction::mUserName [private]

User name.

Definition at line 211 of file qgshttptransaction.h.

Referenced by getSynchronously(), and setCredentials().

Indicates the associated QTimer object - used to detect network timeouts.

Definition at line 201 of file qgshttptransaction.h.

Referenced by dataHeaderReceived(), dataProgress(), dataStateChanged(), and getSynchronously().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines