8#include <QtNetwork/qtnetworkglobal.h>
9#include <QtNetwork/qhostaddress.h>
10#include <QtNetwork/qnetworkrequest.h>
11#include <QtCore/qshareddata.h>
13#ifndef QT_NO_NETWORKPROXY
37 explicit QNetworkProxyQuery(
const QUrl &requestUrl, QueryType queryType = UrlRequest);
38 QNetworkProxyQuery(
const QString &hostname,
int port,
const QString &protocolTag = QString(),
39 QueryType queryType = TcpSocket);
40 explicit QNetworkProxyQuery(quint16 bindPort,
const QString &protocolTag = QString(),
41 QueryType queryType = TcpServer);
42 QNetworkProxyQuery(
const QNetworkProxyQuery &other);
43 QNetworkProxyQuery &operator=(QNetworkProxyQuery &&other)
noexcept { swap(other);
return *
this; }
44 QNetworkProxyQuery &operator=(
const QNetworkProxyQuery &other);
45 ~QNetworkProxyQuery();
47 void swap(QNetworkProxyQuery &other)
noexcept { d.swap(other.d); }
49 bool operator==(
const QNetworkProxyQuery &other)
const;
50 inline bool operator!=(
const QNetworkProxyQuery &other)
const
51 {
return !(*
this == other); }
53 QueryType queryType()
const;
54 void setQueryType(QueryType type);
57 void setPeerPort(
int port);
59 QString peerHostName()
const;
60 void setPeerHostName(
const QString &hostname);
62 int localPort()
const;
63 void setLocalPort(
int port);
65 QString protocolTag()
const;
66 void setProtocolTag(
const QString &protocolTag);
69 void setUrl(
const QUrl &url);
72 QSharedDataPointer<QNetworkProxyQueryPrivate> d;
93 TunnelingCapability = 0x0001,
94 ListeningCapability = 0x0002,
95 UdpTunnelingCapability = 0x0004,
96 CachingCapability = 0x0008,
97 HostNameLookupCapability = 0x0010,
98 SctpTunnelingCapability = 0x00020,
99 SctpListeningCapability = 0x00040
101 Q_DECLARE_FLAGS(Capabilities, Capability)
104 QNetworkProxy(ProxyType type,
const QString &hostName = QString(), quint16 port = 0,
105 const QString &user = QString(),
const QString &password = QString());
106 QNetworkProxy(
const QNetworkProxy &other);
107 QNetworkProxy &operator=(QNetworkProxy &&other)
noexcept { swap(other);
return *
this; }
108 QNetworkProxy &operator=(
const QNetworkProxy &other);
111 void swap(QNetworkProxy &other)
noexcept { d.swap(other.d); }
113 bool operator==(
const QNetworkProxy &other)
const;
114 inline bool operator!=(
const QNetworkProxy &other)
const
115 {
return !(*
this == other); }
117 void setType(QNetworkProxy::ProxyType type);
118 QNetworkProxy::ProxyType type()
const;
120 void setCapabilities(Capabilities capab);
121 Capabilities capabilities()
const;
122 bool isCachingProxy()
const;
123 bool isTransparentProxy()
const;
125 void setUser(
const QString &userName);
126 QString user()
const;
128 void setPassword(
const QString &password);
129 QString password()
const;
131 void setHostName(
const QString &hostName);
132 QString hostName()
const;
134 void setPort(quint16 port);
135 quint16 port()
const;
137 static void setApplicationProxy(
const QNetworkProxy &proxy);
138 static QNetworkProxy applicationProxy();
140 QHttpHeaders headers()
const;
141 void setHeaders(
const QHttpHeaders &newHeaders);
142 void setHeaders(QHttpHeaders &&newHeaders);
145 QVariant header(QNetworkRequest::KnownHeaders header)
const;
146 void setHeader(QNetworkRequest::KnownHeaders header,
const QVariant &value);
149 bool hasRawHeader(
const QByteArray &headerName)
const;
150 QList<QByteArray> rawHeaderList()
const;
151 QByteArray rawHeader(
const QByteArray &headerName)
const;
152 void setRawHeader(
const QByteArray &headerName,
const QByteArray &value);
155 QSharedDataPointer<QNetworkProxyPrivate> d;
159Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkProxy::Capabilities)
161class Q_NETWORK_EXPORT QNetworkProxyFactory
164 QNetworkProxyFactory();
165 virtual ~QNetworkProxyFactory();
167 virtual QList<QNetworkProxy> queryProxy(
const QNetworkProxyQuery &query = QNetworkProxyQuery()) = 0;
169 static bool usesSystemConfiguration();
170 static void setUseSystemConfiguration(
bool enable);
171 static void setApplicationProxyFactory(QNetworkProxyFactory *factory);
172 static QList<QNetworkProxy> proxyForQuery(
const QNetworkProxyQuery &query);
173 static QList<QNetworkProxy> systemProxyForQuery(
const QNetworkProxyQuery &query = QNetworkProxyQuery());
176#ifndef QT_NO_DEBUG_STREAM
177Q_NETWORK_EXPORT
QDebug operator<<(QDebug debug,
const QNetworkProxy &proxy);
178Q_NETWORK_EXPORT
QDebug operator<<(QDebug debug,
const QNetworkProxyQuery &proxyQuery);
183QT_DECL_METATYPE_EXTERN(QNetworkProxy, Q_NETWORK_EXPORT)
The QAuthenticator class provides an authentication object.
QString errorDetail(QNetworkReply::NetworkError errorCode, QIODevice *socket, const QString &extraDetail=QString())
qint64 uncompressedBytesAvailableNextBlock(const QHttpNetworkReply &reply) const
void startNetworkLayerStateLookup()
bool shouldEmitChannelError(QIODevice *socket)
void createAuthorization(QIODevice *socket, QHttpNetworkRequest &request)
void emitReplyError(QIODevice *socket, QHttpNetworkReply *reply, QNetworkReply::NetworkError errorCode)
void fillPipeline(QIODevice *socket)
QUrl parseRedirectResponse(QIODevice *socket, QHttpNetworkReply *reply)
QHttpNetworkRequest predictNextRequest() const
NetworkLayerPreferenceState
void prepareRequest(HttpMessagePair &request)
void startHostInfoLookup()
QHttpNetworkConnectionPrivate(quint16 connectionCount, const QString &hostName, quint16 port, bool encrypt, bool isLocalSocket, QHttpNetworkConnection::ConnectionType type)
void emitProxyAuthenticationRequired(const QHttpNetworkConnectionChannel *chan, const QNetworkProxy &proxy, QAuthenticator *auth)
NetworkLayerPreferenceState networkLayerState
void copyCredentials(int fromChannel, QAuthenticator *auth, bool isProxy)
std::shared_ptr< QSslContext > sslContext
void _q_connectDelayedChannel()
static const int defaultRePipelineLength
void networkLayerDetected(QAbstractSocket::NetworkLayerProtocol protocol)
void _q_startNextRequest()
void requeueRequest(const HttpMessagePair &pair)
QList< HttpMessagePair > lowPriorityQueue
void removeReply(QHttpNetworkReply *reply)
void _q_hostLookupFinished(const QHostInfo &info)
QHttpNetworkReply * predictNextRequestsReply() const
QList< HttpMessagePair > highPriorityQueue
void updateChannel(int i, const HttpMessagePair &messagePair)
bool handleAuthenticateChallenge(QIODevice *socket, QHttpNetworkReply *reply, bool isProxy, bool &resend)
QHttpNetworkReply * queueRequest(const QHttpNetworkRequest &request)
QHttpNetworkConnectionChannel *const channels
void readMoreLater(QHttpNetworkReply *reply)
bool fillPipeline(QList< HttpMessagePair > &queue, QHttpNetworkConnectionChannel &channel)
bool dequeueRequest(QIODevice *socket)
QTimer delayedConnectionTimer
QHttp2Configuration http2Parameters
QNetworkProxy networkProxy
int indexOf(QIODevice *socket) const
~QHttpNetworkConnectionPrivate()
qint64 uncompressedBytesAvailable(const QHttpNetworkReply &reply) const
static const int defaultPipelineLength
static ParseRedirectResult parseRedirectResponse(QHttpNetworkReply *reply)
The QNetworkProxyQuery class is used to query the proxy settings for a socket.
The QNetworkProxy class provides a network layer proxy.
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
std::pair< QHttpNetworkRequest, QHttpNetworkReply * > HttpMessagePair
QNetworkReply::NetworkError errorCode