qnetworkrequest.h

Go to the documentation of this file.
00001 /****************************************************************************
00002 **
00003 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
00004 ** All rights reserved.
00005 ** Contact: Nokia Corporation (qt-info@nokia.com)
00006 **
00007 ** This file is part of the QtNetwork module of the Qt Toolkit.
00008 **
00009 ** $QT_BEGIN_LICENSE:LGPL$
00010 ** Commercial Usage
00011 ** Licensees holding valid Qt Commercial licenses may use this file in
00012 ** accordance with the Qt Commercial License Agreement provided with the
00013 ** Software or, alternatively, in accordance with the terms contained in
00014 ** a written agreement between you and Nokia.
00015 **
00016 ** GNU Lesser General Public License Usage
00017 ** Alternatively, this file may be used under the terms of the GNU Lesser
00018 ** General Public License version 2.1 as published by the Free Software
00019 ** Foundation and appearing in the file LICENSE.LGPL included in the
00020 ** packaging of this file.  Please review the following information to
00021 ** ensure the GNU Lesser General Public License version 2.1 requirements
00022 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
00023 **
00024 ** In addition, as a special exception, Nokia gives you certain additional
00025 ** rights.  These rights are described in the Nokia Qt LGPL Exception
00026 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this module.
00027 **
00028 ** GNU General Public License Usage
00029 ** Alternatively, this file may be used under the terms of the GNU
00030 ** General Public License version 3.0 as published by the Free Software
00031 ** Foundation and appearing in the file LICENSE.GPL included in the
00032 ** packaging of this file.  Please review the following information to
00033 ** ensure the GNU General Public License version 3.0 requirements will be
00034 ** met: http://www.gnu.org/copyleft/gpl.html.
00035 **
00036 ** If you have questions regarding the use of this file, please contact
00037 ** Nokia at qt-info@nokia.com.
00038 ** $QT_END_LICENSE$
00039 **
00040 ****************************************************************************/
00041 
00042 #ifndef QNETWORKREQUEST_H
00043 #define QNETWORKREQUEST_H
00044 
00045 #include <QtCore/QSharedDataPointer>
00046 #include <QtCore/QString>
00047 #include <QtCore/QUrl>
00048 #include <QtCore/QVariant>
00049 
00050 QT_BEGIN_HEADER
00051 
00052 QT_BEGIN_NAMESPACE
00053 
00054 QT_MODULE(Network)
00055 
00056 class QSslConfiguration;
00057 
00058 class QNetworkRequestPrivate;
00059 class Q_NETWORK_EXPORT QNetworkRequest
00060 {
00061 public:
00062     enum KnownHeaders {
00063         ContentTypeHeader,
00064         ContentLengthHeader,
00065         LocationHeader,
00066         LastModifiedHeader,
00067         CookieHeader,
00068         SetCookieHeader
00069     };
00070     enum Attribute {
00071         HttpStatusCodeAttribute,
00072         HttpReasonPhraseAttribute,
00073         RedirectionTargetAttribute,
00074         ConnectionEncryptedAttribute,
00075         CacheLoadControlAttribute,
00076         CacheSaveControlAttribute,
00077         SourceIsFromCacheAttribute,
00078         DoNotBufferUploadDataAttribute,
00079         HttpPipeliningAllowedAttribute,
00080         HttpPipeliningWasUsedAttribute,
00081         CustomVerbAttribute,
00082         CookieLoadControlAttribute,
00083         AuthenticationReuseAttribute,
00084         CookieSaveControlAttribute,
00085         MaximumDownloadBufferSizeAttribute, // internal
00086         DownloadBufferAttribute, // internal
00087 
00088         User = 1000,
00089         UserMax = 32767
00090     };
00091     enum CacheLoadControl {
00092         AlwaysNetwork,
00093         PreferNetwork,
00094         PreferCache,
00095         AlwaysCache
00096     };
00097     enum LoadControl {
00098         Automatic = 0,
00099         Manual
00100     };
00101 
00102     enum Priority {
00103         HighPriority = 1,
00104         NormalPriority = 3,
00105         LowPriority = 5
00106     };
00107 
00108     explicit QNetworkRequest(const QUrl &url = QUrl());
00109     QNetworkRequest(const QNetworkRequest &other);
00110     ~QNetworkRequest();
00111     QNetworkRequest &operator=(const QNetworkRequest &other);
00112 
00113     bool operator==(const QNetworkRequest &other) const;
00114     inline bool operator!=(const QNetworkRequest &other) const
00115     { return !operator==(other); }
00116 
00117     QUrl url() const;
00118     void setUrl(const QUrl &url);
00119 
00120     // "cooked" headers
00121     QVariant header(KnownHeaders header) const;
00122     void setHeader(KnownHeaders header, const QVariant &value);
00123 
00124     // raw headers:
00125     bool hasRawHeader(const QByteArray &headerName) const;
00126     QList<QByteArray> rawHeaderList() const;
00127     QByteArray rawHeader(const QByteArray &headerName) const;
00128     void setRawHeader(const QByteArray &headerName, const QByteArray &value);
00129 
00130     // attributes
00131     QVariant attribute(Attribute code, const QVariant &defaultValue = QVariant()) const;
00132     void setAttribute(Attribute code, const QVariant &value);
00133 
00134 #ifndef QT_NO_OPENSSL
00135     QSslConfiguration sslConfiguration() const;
00136     void setSslConfiguration(const QSslConfiguration &configuration);
00137 #endif
00138 
00139     void setOriginatingObject(QObject *object);
00140     QObject *originatingObject() const;
00141 
00142     Priority priority() const;
00143     void setPriority(Priority priority);
00144 
00145 private:
00146     QSharedDataPointer<QNetworkRequestPrivate> d;
00147     friend class QNetworkRequestPrivate;
00148 };
00149 
00150 QT_END_NAMESPACE
00151 
00152 Q_DECLARE_METATYPE(QNetworkRequest)
00153 
00154 QT_END_HEADER
00155 
00156 #endif