| Line | Source Code | Coverage |
|---|
| 1 | /**************************************************************************** | - |
| 2 | ** | - |
| 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | - |
| 4 | ** Contact: http://www.qt-project.org/legal | - |
| 5 | ** | - |
| 6 | ** This file is part of the QtNetwork module of the Qt Toolkit. | - |
| 7 | ** | - |
| 8 | ** $QT_BEGIN_LICENSE:LGPL$ | - |
| 9 | ** Commercial License Usage | - |
| 10 | ** Licensees holding valid commercial Qt licenses may use this file in | - |
| 11 | ** accordance with the commercial license agreement provided with the | - |
| 12 | ** Software or, alternatively, in accordance with the terms contained in | - |
| 13 | ** a written agreement between you and Digia. For licensing terms and | - |
| 14 | ** conditions see http://qt.digia.com/licensing. For further information | - |
| 15 | ** use the contact form at http://qt.digia.com/contact-us. | - |
| 16 | ** | - |
| 17 | ** GNU Lesser General Public License Usage | - |
| 18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - |
| 19 | ** General Public License version 2.1 as published by the Free Software | - |
| 20 | ** Foundation and appearing in the file LICENSE.LGPL included in the | - |
| 21 | ** packaging of this file. Please review the following information to | - |
| 22 | ** ensure the GNU Lesser General Public License version 2.1 requirements | - |
| 23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - |
| 24 | ** | - |
| 25 | ** In addition, as a special exception, Digia gives you certain additional | - |
| 26 | ** rights. These rights are described in the Digia Qt LGPL Exception | - |
| 27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - |
| 28 | ** | - |
| 29 | ** GNU General Public License Usage | - |
| 30 | ** Alternatively, this file may be used under the terms of the GNU | - |
| 31 | ** General Public License version 3.0 as published by the Free Software | - |
| 32 | ** Foundation and appearing in the file LICENSE.GPL included in the | - |
| 33 | ** packaging of this file. Please review the following information to | - |
| 34 | ** ensure the GNU General Public License version 3.0 requirements will be | - |
| 35 | ** met: http://www.gnu.org/copyleft/gpl.html. | - |
| 36 | ** | - |
| 37 | ** | - |
| 38 | ** $QT_END_LICENSE$ | - |
| 39 | ** | - |
| 40 | ****************************************************************************/ | - |
| 41 | | - |
| 42 | #include "qnetworkreply.h" | - |
| 43 | #include "qnetworkreply_p.h" | - |
| 44 | #include <QtNetwork/qsslconfiguration.h> | - |
| 45 | | - |
| 46 | QT_BEGIN_NAMESPACE | - |
| 47 | | - |
| 48 | const int QNetworkReplyPrivate::progressSignalInterval = 100; | - |
| 49 | | - |
| 50 | QNetworkReplyPrivate::QNetworkReplyPrivate() | - |
| 51 | : readBufferMaxSize(0), | - |
| 52 | operation(QNetworkAccessManager::UnknownOperation), | - |
| 53 | errorCode(QNetworkReply::NoError) | - |
| 54 | , isFinished(false) | - |
| 55 | { | - |
| 56 | // set the default attribute values | - |
| 57 | attributes.insert(QNetworkRequest::ConnectionEncryptedAttribute, false); executed (the execution status of this line is deduced): attributes.insert(QNetworkRequest::ConnectionEncryptedAttribute, false); | - |
| 58 | } executed: }Execution Count:874 | 874 |
| 59 | | - |
| 60 | | - |
| 61 | /*! | - |
| 62 | \class QNetworkReply | - |
| 63 | \since 4.4 | - |
| 64 | \brief The QNetworkReply class contains the data and headers for a request | - |
| 65 | sent with QNetworkAccessManager | - |
| 66 | | - |
| 67 | \reentrant | - |
| 68 | \ingroup network | - |
| 69 | \inmodule QtNetwork | - |
| 70 | | - |
| 71 | The QNetworkReply class contains the data and meta data related to | - |
| 72 | a request posted with QNetworkAccessManager. Like QNetworkRequest, | - |
| 73 | it contains a URL and headers (both in parsed and raw form), some | - |
| 74 | information about the reply's state and the contents of the reply | - |
| 75 | itself. | - |
| 76 | | - |
| 77 | QNetworkReply is a sequential-access QIODevice, which means that | - |
| 78 | once data is read from the object, it no longer kept by the | - |
| 79 | device. It is therefore the application's responsibility to keep | - |
| 80 | this data if it needs to. Whenever more data is received from the | - |
| 81 | network and processed, the readyRead() signal is emitted. | - |
| 82 | | - |
| 83 | The downloadProgress() signal is also emitted when data is | - |
| 84 | received, but the number of bytes contained in it may not | - |
| 85 | represent the actual bytes received, if any transformation is done | - |
| 86 | to the contents (for example, decompressing and removing the | - |
| 87 | protocol overhead). | - |
| 88 | | - |
| 89 | Even though QNetworkReply is a QIODevice connected to the contents | - |
| 90 | of the reply, it also emits the uploadProgress() signal, which | - |
| 91 | indicates the progress of the upload for operations that have such | - |
| 92 | content. | - |
| 93 | | - |
| 94 | \note Do not delete the object in the slot connected to the | - |
| 95 | error() or finished() signal. Use deleteLater(). | - |
| 96 | | - |
| 97 | \sa QNetworkRequest, QNetworkAccessManager | - |
| 98 | */ | - |
| 99 | | - |
| 100 | /*! | - |
| 101 | \enum QNetworkReply::NetworkError | - |
| 102 | | - |
| 103 | Indicates all possible error conditions found during the | - |
| 104 | processing of the request. | - |
| 105 | | - |
| 106 | \value NoError no error condition. | - |
| 107 | \note When the HTTP protocol returns a redirect no error will be | - |
| 108 | reported. You can check if there is a redirect with the | - |
| 109 | QNetworkRequest::RedirectionTargetAttribute attribute. | - |
| 110 | | - |
| 111 | \value ConnectionRefusedError the remote server refused the | - |
| 112 | connection (the server is not accepting requests) | - |
| 113 | | - |
| 114 | \value RemoteHostClosedError the remote server closed the | - |
| 115 | connection prematurely, before the entire reply was received and | - |
| 116 | processed | - |
| 117 | | - |
| 118 | \value HostNotFoundError the remote host name was not found | - |
| 119 | (invalid hostname) | - |
| 120 | | - |
| 121 | \value TimeoutError the connection to the remote server | - |
| 122 | timed out | - |
| 123 | | - |
| 124 | \value OperationCanceledError the operation was canceled via calls | - |
| 125 | to abort() or close() before it was finished. | - |
| 126 | | - |
| 127 | \value SslHandshakeFailedError the SSL/TLS handshake failed and the | - |
| 128 | encrypted channel could not be established. The sslErrors() signal | - |
| 129 | should have been emitted. | - |
| 130 | | - |
| 131 | \value TemporaryNetworkFailureError the connection was broken due | - |
| 132 | to disconnection from the network, however the system has initiated | - |
| 133 | roaming to another access point. The request should be resubmitted | - |
| 134 | and will be processed as soon as the connection is re-established. | - |
| 135 | | - |
| 136 | \value NetworkSessionFailedError the connection was broken due | - |
| 137 | to disconnection from the network or failure to start the network. | - |
| 138 | | - |
| 139 | \value BackgroundRequestNotAllowedError the background request | - |
| 140 | is not currently allowed due to platform policy. | - |
| 141 | | - |
| 142 | \value ProxyConnectionRefusedError the connection to the proxy | - |
| 143 | server was refused (the proxy server is not accepting requests) | - |
| 144 | | - |
| 145 | \value ProxyConnectionClosedError the proxy server closed the | - |
| 146 | connection prematurely, before the entire reply was received and | - |
| 147 | processed | - |
| 148 | | - |
| 149 | \value ProxyNotFoundError the proxy host name was not | - |
| 150 | found (invalid proxy hostname) | - |
| 151 | | - |
| 152 | \value ProxyTimeoutError the connection to the proxy | - |
| 153 | timed out or the proxy did not reply in time to the request sent | - |
| 154 | | - |
| 155 | \value ProxyAuthenticationRequiredError the proxy requires | - |
| 156 | authentication in order to honour the request but did not accept | - |
| 157 | any credentials offered (if any) | - |
| 158 | | - |
| 159 | \value ContentAccessDenied the access to the remote | - |
| 160 | content was denied (similar to HTTP error 401) | - |
| 161 | | - |
| 162 | \value ContentOperationNotPermittedError the operation requested | - |
| 163 | on the remote content is not permitted | - |
| 164 | | - |
| 165 | \value ContentNotFoundError the remote content was not | - |
| 166 | found at the server (similar to HTTP error 404) | - |
| 167 | | - |
| 168 | \value AuthenticationRequiredError the remote server requires | - |
| 169 | authentication to serve the content but the credentials provided | - |
| 170 | were not accepted (if any) | - |
| 171 | | - |
| 172 | \value ContentReSendError the request needed to be sent | - |
| 173 | again, but this failed for example because the upload data | - |
| 174 | could not be read a second time. | - |
| 175 | | - |
| 176 | \value ProtocolUnknownError the Network Access API cannot | - |
| 177 | honor the request because the protocol is not known | - |
| 178 | | - |
| 179 | \value ProtocolInvalidOperationError the requested operation is | - |
| 180 | invalid for this protocol | - |
| 181 | | - |
| 182 | \value UnknownNetworkError an unknown network-related | - |
| 183 | error was detected | - |
| 184 | | - |
| 185 | \value UnknownProxyError an unknown proxy-related error | - |
| 186 | was detected | - |
| 187 | | - |
| 188 | \value UnknownContentError an unknown error related to | - |
| 189 | the remote content was detected | - |
| 190 | | - |
| 191 | \value ProtocolFailure a breakdown in protocol was | - |
| 192 | detected (parsing error, invalid or unexpected responses, etc.) | - |
| 193 | | - |
| 194 | \sa error() | - |
| 195 | */ | - |
| 196 | | - |
| 197 | /*! | - |
| 198 | \fn void QNetworkReply::sslErrors(const QList<QSslError> &errors) | - |
| 199 | | - |
| 200 | This signal is emitted if the SSL/TLS session encountered errors | - |
| 201 | during the set up, including certificate verification errors. The | - |
| 202 | \a errors parameter contains the list of errors. | - |
| 203 | | - |
| 204 | To indicate that the errors are not fatal and that the connection | - |
| 205 | should proceed, the ignoreSslErrors() function should be called | - |
| 206 | from the slot connected to this signal. If it is not called, the | - |
| 207 | SSL session will be torn down before any data is exchanged | - |
| 208 | (including the URL). | - |
| 209 | | - |
| 210 | This signal can be used to display an error message to the user | - |
| 211 | indicating that security may be compromised and display the | - |
| 212 | SSL settings (see sslConfiguration() to obtain it). If the user | - |
| 213 | decides to proceed after analyzing the remote certificate, the | - |
| 214 | slot should call ignoreSslErrors(). | - |
| 215 | | - |
| 216 | \sa QSslSocket::sslErrors(), QNetworkAccessManager::sslErrors(), | - |
| 217 | sslConfiguration(), ignoreSslErrors() | - |
| 218 | */ | - |
| 219 | | - |
| 220 | /*! | - |
| 221 | \fn void QNetworkReply::metaDataChanged() | - |
| 222 | | - |
| 223 | \omit FIXME: Update name? \endomit | - |
| 224 | | - |
| 225 | This signal is emitted whenever the metadata in this reply | - |
| 226 | changes. metadata is any information that is not the content | - |
| 227 | (data) itself, including the network headers. In the majority of | - |
| 228 | cases, the metadata will be known fully by the time the first | - |
| 229 | byte of data is received. However, it is possible to receive | - |
| 230 | updates of headers or other metadata during the processing of the | - |
| 231 | data. | - |
| 232 | | - |
| 233 | \sa header(), rawHeaderList(), rawHeader(), hasRawHeader() | - |
| 234 | */ | - |
| 235 | | - |
| 236 | /*! | - |
| 237 | \fn void QNetworkReply::finished() | - |
| 238 | | - |
| 239 | This signal is emitted when the reply has finished | - |
| 240 | processing. After this signal is emitted, there will be no more | - |
| 241 | updates to the reply's data or metadata. | - |
| 242 | | - |
| 243 | Unless close() has been called, the reply will be still be opened | - |
| 244 | for reading, so the data can be retrieved by calls to read() or | - |
| 245 | readAll(). In particular, if no calls to read() were made as a | - |
| 246 | result of readyRead(), a call to readAll() will retrieve the full | - |
| 247 | contents in a QByteArray. | - |
| 248 | | - |
| 249 | This signal is emitted in tandem with | - |
| 250 | QNetworkAccessManager::finished() where that signal's reply | - |
| 251 | parameter is this object. | - |
| 252 | | - |
| 253 | \note Do not delete the object in the slot connected to this | - |
| 254 | signal. Use deleteLater(). | - |
| 255 | | - |
| 256 | You can also use isFinished() to check if a QNetworkReply | - |
| 257 | has finished even before you receive the finished() signal. | - |
| 258 | | - |
| 259 | \sa QNetworkAccessManager::finished(), isFinished() | - |
| 260 | */ | - |
| 261 | | - |
| 262 | /*! | - |
| 263 | \fn void QNetworkReply::error(QNetworkReply::NetworkError code) | - |
| 264 | | - |
| 265 | This signal is emitted when the reply detects an error in | - |
| 266 | processing. The finished() signal will probably follow, indicating | - |
| 267 | that the connection is over. | - |
| 268 | | - |
| 269 | The \a code parameter contains the code of the error that was | - |
| 270 | detected. Call errorString() to obtain a textual representation of | - |
| 271 | the error condition. | - |
| 272 | | - |
| 273 | \note Do not delete the object in the slot connected to this | - |
| 274 | signal. Use deleteLater(). | - |
| 275 | | - |
| 276 | \sa error(), errorString() | - |
| 277 | */ | - |
| 278 | | - |
| 279 | /*! | - |
| 280 | \fn void QNetworkReply::uploadProgress(qint64 bytesSent, qint64 bytesTotal) | - |
| 281 | | - |
| 282 | This signal is emitted to indicate the progress of the upload part | - |
| 283 | of this network request, if there's any. If there's no upload | - |
| 284 | associated with this request, this signal will not be emitted. | - |
| 285 | | - |
| 286 | The \a bytesSent | - |
| 287 | parameter indicates the number of bytes uploaded, while \a | - |
| 288 | bytesTotal indicates the total number of bytes to be uploaded. If | - |
| 289 | the number of bytes to be uploaded could not be determined, \a | - |
| 290 | bytesTotal will be -1. | - |
| 291 | | - |
| 292 | The upload is finished when \a bytesSent is equal to \a | - |
| 293 | bytesTotal. At that time, \a bytesTotal will not be -1. | - |
| 294 | | - |
| 295 | \sa downloadProgress() | - |
| 296 | */ | - |
| 297 | | - |
| 298 | /*! | - |
| 299 | \fn void QNetworkReply::downloadProgress(qint64 bytesReceived, qint64 bytesTotal) | - |
| 300 | | - |
| 301 | This signal is emitted to indicate the progress of the download | - |
| 302 | part of this network request, if there's any. If there's no | - |
| 303 | download associated with this request, this signal will be emitted | - |
| 304 | once with 0 as the value of both \a bytesReceived and \a | - |
| 305 | bytesTotal. | - |
| 306 | | - |
| 307 | The \a bytesReceived parameter indicates the number of bytes | - |
| 308 | received, while \a bytesTotal indicates the total number of bytes | - |
| 309 | expected to be downloaded. If the number of bytes to be downloaded | - |
| 310 | is not known, \a bytesTotal will be -1. | - |
| 311 | | - |
| 312 | The download is finished when \a bytesReceived is equal to \a | - |
| 313 | bytesTotal. At that time, \a bytesTotal will not be -1. | - |
| 314 | | - |
| 315 | Note that the values of both \a bytesReceived and \a bytesTotal | - |
| 316 | may be different from size(), the total number of bytes | - |
| 317 | obtained through read() or readAll(), or the value of the | - |
| 318 | header(ContentLengthHeader). The reason for that is that there may | - |
| 319 | be protocol overhead or the data may be compressed during the | - |
| 320 | download. | - |
| 321 | | - |
| 322 | \sa uploadProgress(), bytesAvailable() | - |
| 323 | */ | - |
| 324 | | - |
| 325 | /*! | - |
| 326 | \fn void QNetworkReply::abort() | - |
| 327 | | - |
| 328 | Aborts the operation immediately and close down any network | - |
| 329 | connections still open. Uploads still in progress are also | - |
| 330 | aborted. | - |
| 331 | | - |
| 332 | \sa close() | - |
| 333 | */ | - |
| 334 | | - |
| 335 | /*! | - |
| 336 | Creates a QNetworkReply object with parent \a parent. | - |
| 337 | | - |
| 338 | You cannot directly instantiate QNetworkReply objects. Use | - |
| 339 | QNetworkAccessManager functions to do that. | - |
| 340 | */ | - |
| 341 | QNetworkReply::QNetworkReply(QObject *parent) | - |
| 342 | : QIODevice(*new QNetworkReplyPrivate, parent) | - |
| 343 | { | - |
| 344 | } | 0 |
| 345 | | - |
| 346 | /*! | - |
| 347 | \internal | - |
| 348 | */ | - |
| 349 | QNetworkReply::QNetworkReply(QNetworkReplyPrivate &dd, QObject *parent) | - |
| 350 | : QIODevice(dd, parent) | - |
| 351 | { | - |
| 352 | } executed: }Execution Count:874 | 874 |
| 353 | | - |
| 354 | /*! | - |
| 355 | Disposes of this reply and frees any resources associated with | - |
| 356 | it. If any network connections are still open, they will be | - |
| 357 | closed. | - |
| 358 | | - |
| 359 | \sa abort(), close() | - |
| 360 | */ | - |
| 361 | QNetworkReply::~QNetworkReply() | - |
| 362 | { | - |
| 363 | } | - |
| 364 | | - |
| 365 | /*! | - |
| 366 | Closes this device for reading. Unread data is discarded, but the | - |
| 367 | network resources are not discarded until they are finished. In | - |
| 368 | particular, if any upload is in progress, it will continue until | - |
| 369 | it is done. | - |
| 370 | | - |
| 371 | The finished() signal is emitted when all operations are over and | - |
| 372 | the network resources are freed. | - |
| 373 | | - |
| 374 | \sa abort(), finished() | - |
| 375 | */ | - |
| 376 | void QNetworkReply::close() | - |
| 377 | { | - |
| 378 | QIODevice::close(); executed (the execution status of this line is deduced): QIODevice::close(); | - |
| 379 | } executed: }Execution Count:5 | 5 |
| 380 | | - |
| 381 | /*! | - |
| 382 | \internal | - |
| 383 | */ | - |
| 384 | bool QNetworkReply::isSequential() const | - |
| 385 | { | - |
| 386 | return true; executed: return true;Execution Count:93 | 93 |
| 387 | } | - |
| 388 | | - |
| 389 | /*! | - |
| 390 | Returns the size of the read buffer, in bytes. | - |
| 391 | | - |
| 392 | \sa setReadBufferSize() | - |
| 393 | */ | - |
| 394 | qint64 QNetworkReply::readBufferSize() const | - |
| 395 | { | - |
| 396 | return d_func()->readBufferMaxSize; executed: return d_func()->readBufferMaxSize;Execution Count:1170 | 1170 |
| 397 | } | - |
| 398 | | - |
| 399 | /*! | - |
| 400 | Sets the size of the read buffer to be \a size bytes. The read | - |
| 401 | buffer is the buffer that holds data that is being downloaded off | - |
| 402 | the network, before it is read with QIODevice::read(). Setting the | - |
| 403 | buffer size to 0 will make the buffer unlimited in size. | - |
| 404 | | - |
| 405 | QNetworkReply will try to stop reading from the network once this | - |
| 406 | buffer is full (i.e., bytesAvailable() returns \a size or more), | - |
| 407 | thus causing the download to throttle down as well. If the buffer | - |
| 408 | is not limited in size, QNetworkReply will try to download as fast | - |
| 409 | as possible from the network. | - |
| 410 | | - |
| 411 | Unlike QAbstractSocket::setReadBufferSize(), QNetworkReply cannot | - |
| 412 | guarantee precision in the read buffer size. That is, | - |
| 413 | bytesAvailable() can return more than \a size. | - |
| 414 | | - |
| 415 | \sa readBufferSize() | - |
| 416 | */ | - |
| 417 | void QNetworkReply::setReadBufferSize(qint64 size) | - |
| 418 | { | - |
| 419 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 420 | d->readBufferMaxSize = size; executed (the execution status of this line is deduced): d->readBufferMaxSize = size; | - |
| 421 | } executed: }Execution Count:11 | 11 |
| 422 | | - |
| 423 | /*! | - |
| 424 | Returns the QNetworkAccessManager that was used to create this | - |
| 425 | QNetworkReply object. Initially, it is also the parent object. | - |
| 426 | */ | - |
| 427 | QNetworkAccessManager *QNetworkReply::manager() const | - |
| 428 | { | - |
| 429 | return d_func()->manager; executed: return d_func()->manager;Execution Count:1 | 1 |
| 430 | } | - |
| 431 | | - |
| 432 | /*! | - |
| 433 | Returns the request that was posted for this reply. In special, | - |
| 434 | note that the URL for the request may be different than that of | - |
| 435 | the reply. | - |
| 436 | | - |
| 437 | \sa QNetworkRequest::url(), url(), setRequest() | - |
| 438 | */ | - |
| 439 | QNetworkRequest QNetworkReply::request() const | - |
| 440 | { | - |
| 441 | return d_func()->request; executed: return d_func()->request;Execution Count:1 | 1 |
| 442 | } | - |
| 443 | | - |
| 444 | /*! | - |
| 445 | Returns the operation that was posted for this reply. | - |
| 446 | | - |
| 447 | \sa setOperation() | - |
| 448 | */ | - |
| 449 | QNetworkAccessManager::Operation QNetworkReply::operation() const | - |
| 450 | { | - |
| 451 | return d_func()->operation; executed: return d_func()->operation;Execution Count:1 | 1 |
| 452 | } | - |
| 453 | | - |
| 454 | /*! | - |
| 455 | Returns the error that was found during the processing of this | - |
| 456 | request. If no error was found, returns NoError. | - |
| 457 | | - |
| 458 | \sa setError() | - |
| 459 | */ | - |
| 460 | QNetworkReply::NetworkError QNetworkReply::error() const | - |
| 461 | { | - |
| 462 | return d_func()->errorCode; executed: return d_func()->errorCode;Execution Count:1125 | 1125 |
| 463 | } | - |
| 464 | | - |
| 465 | /*! | - |
| 466 | \since 4.6 | - |
| 467 | | - |
| 468 | Returns true when the reply has finished or was aborted. | - |
| 469 | | - |
| 470 | \sa isRunning() | - |
| 471 | */ | - |
| 472 | bool QNetworkReply::isFinished() const | - |
| 473 | { | - |
| 474 | return d_func()->isFinished; executed: return d_func()->isFinished;Execution Count:4264 | 4264 |
| 475 | } | - |
| 476 | | - |
| 477 | /*! | - |
| 478 | \since 4.6 | - |
| 479 | | - |
| 480 | Returns true when the request is still processing and the | - |
| 481 | reply has not finished or was aborted yet. | - |
| 482 | | - |
| 483 | \sa isFinished() | - |
| 484 | */ | - |
| 485 | bool QNetworkReply::isRunning() const | - |
| 486 | { | - |
| 487 | return !isFinished(); executed: return !isFinished();Execution Count:16 | 16 |
| 488 | } | - |
| 489 | | - |
| 490 | /*! | - |
| 491 | Returns the URL of the content downloaded or uploaded. Note that | - |
| 492 | the URL may be different from that of the original request. | - |
| 493 | | - |
| 494 | \sa request(), setUrl(), QNetworkRequest::url() | - |
| 495 | */ | - |
| 496 | QUrl QNetworkReply::url() const | - |
| 497 | { | - |
| 498 | return d_func()->url; executed: return d_func()->url;Execution Count:394 | 394 |
| 499 | } | - |
| 500 | | - |
| 501 | /*! | - |
| 502 | Returns the value of the known header \a header, if that header | - |
| 503 | was sent by the remote server. If the header was not sent, returns | - |
| 504 | an invalid QVariant. | - |
| 505 | | - |
| 506 | \sa rawHeader(), setHeader(), QNetworkRequest::header() | - |
| 507 | */ | - |
| 508 | QVariant QNetworkReply::header(QNetworkRequest::KnownHeaders header) const | - |
| 509 | { | - |
| 510 | return d_func()->cookedHeaders.value(header); executed: return d_func()->cookedHeaders.value(header);Execution Count:322 | 322 |
| 511 | } | - |
| 512 | | - |
| 513 | /*! | - |
| 514 | Returns true if the raw header of name \a headerName was sent by | - |
| 515 | the remote server | - |
| 516 | | - |
| 517 | \sa rawHeader() | - |
| 518 | */ | - |
| 519 | bool QNetworkReply::hasRawHeader(const QByteArray &headerName) const | - |
| 520 | { | - |
| 521 | Q_D(const QNetworkReply); never executed (the execution status of this line is deduced): const QNetworkReplyPrivate * const d = d_func(); | - |
| 522 | return d->findRawHeader(headerName) != d->rawHeaders.constEnd(); never executed: return d->findRawHeader(headerName) != d->rawHeaders.constEnd(); | 0 |
| 523 | } | - |
| 524 | | - |
| 525 | /*! | - |
| 526 | Returns the raw contents of the header \a headerName as sent by | - |
| 527 | the remote server. If there is no such header, returns an empty | - |
| 528 | byte array, which may be indistinguishable from an empty | - |
| 529 | header. Use hasRawHeader() to verify if the server sent such | - |
| 530 | header field. | - |
| 531 | | - |
| 532 | \sa setRawHeader(), hasRawHeader(), header() | - |
| 533 | */ | - |
| 534 | QByteArray QNetworkReply::rawHeader(const QByteArray &headerName) const | - |
| 535 | { | - |
| 536 | Q_D(const QNetworkReply); executed (the execution status of this line is deduced): const QNetworkReplyPrivate * const d = d_func(); | - |
| 537 | QNetworkHeadersPrivate::RawHeadersList::ConstIterator it = executed (the execution status of this line is deduced): QNetworkHeadersPrivate::RawHeadersList::ConstIterator it = | - |
| 538 | d->findRawHeader(headerName); executed (the execution status of this line is deduced): d->findRawHeader(headerName); | - |
| 539 | if (it != d->rawHeaders.constEnd()) evaluated: it != d->rawHeaders.constEnd()| yes Evaluation Count:410 | yes Evaluation Count:4220 |
| 410-4220 |
| 540 | return it->second; executed: return it->second;Execution Count:410 | 410 |
| 541 | return QByteArray(); executed: return QByteArray();Execution Count:4220 | 4220 |
| 542 | } | - |
| 543 | | - |
| 544 | /*! \typedef QNetworkReply::RawHeaderPair | - |
| 545 | | - |
| 546 | RawHeaderPair is a QPair<QByteArray, QByteArray> where the first | - |
| 547 | QByteArray is the header name and the second is the header. | - |
| 548 | */ | - |
| 549 | | - |
| 550 | /*! | - |
| 551 | Returns a list of raw header pairs. | - |
| 552 | */ | - |
| 553 | const QList<QNetworkReply::RawHeaderPair>& QNetworkReply::rawHeaderPairs() const | - |
| 554 | { | - |
| 555 | Q_D(const QNetworkReply); never executed (the execution status of this line is deduced): const QNetworkReplyPrivate * const d = d_func(); | - |
| 556 | return d->rawHeaders; never executed: return d->rawHeaders; | 0 |
| 557 | } | - |
| 558 | | - |
| 559 | /*! | - |
| 560 | Returns a list of headers fields that were sent by the remote | - |
| 561 | server, in the order that they were sent. Duplicate headers are | - |
| 562 | merged together and take place of the latter duplicate. | - |
| 563 | */ | - |
| 564 | QList<QByteArray> QNetworkReply::rawHeaderList() const | - |
| 565 | { | - |
| 566 | return d_func()->rawHeadersKeys(); executed: return d_func()->rawHeadersKeys();Execution Count:115 | 115 |
| 567 | } | - |
| 568 | | - |
| 569 | /*! | - |
| 570 | Returns the attribute associated with the code \a code. If the | - |
| 571 | attribute has not been set, it returns an invalid QVariant (type QMetaType::Unknown). | - |
| 572 | | - |
| 573 | You can expect the default values listed in | - |
| 574 | QNetworkRequest::Attribute to be applied to the values returned by | - |
| 575 | this function. | - |
| 576 | | - |
| 577 | \sa setAttribute(), QNetworkRequest::Attribute | - |
| 578 | */ | - |
| 579 | QVariant QNetworkReply::attribute(QNetworkRequest::Attribute code) const | - |
| 580 | { | - |
| 581 | return d_func()->attributes.value(code); executed: return d_func()->attributes.value(code);Execution Count:511 | 511 |
| 582 | } | - |
| 583 | | - |
| 584 | #ifndef QT_NO_SSL | - |
| 585 | /*! | - |
| 586 | Returns the SSL configuration and state associated with this | - |
| 587 | reply, if SSL was used. It will contain the remote server's | - |
| 588 | certificate, its certificate chain leading to the Certificate | - |
| 589 | Authority as well as the encryption ciphers in use. | - |
| 590 | | - |
| 591 | The peer's certificate and its certificate chain will be known by | - |
| 592 | the time sslErrors() is emitted, if it's emitted. | - |
| 593 | */ | - |
| 594 | QSslConfiguration QNetworkReply::sslConfiguration() const | - |
| 595 | { | - |
| 596 | QSslConfiguration config; executed (the execution status of this line is deduced): QSslConfiguration config; | - |
| 597 | sslConfigurationImplementation(config); executed (the execution status of this line is deduced): sslConfigurationImplementation(config); | - |
| 598 | return config; executed: return config;Execution Count:21 | 21 |
| 599 | } | - |
| 600 | | - |
| 601 | /*! | - |
| 602 | Sets the SSL configuration for the network connection associated | - |
| 603 | with this request, if possible, to be that of \a config. | - |
| 604 | */ | - |
| 605 | void QNetworkReply::setSslConfiguration(const QSslConfiguration &config) | - |
| 606 | { | - |
| 607 | setSslConfigurationImplementation(config); executed (the execution status of this line is deduced): setSslConfigurationImplementation(config); | - |
| 608 | } executed: }Execution Count:89 | 89 |
| 609 | | - |
| 610 | /*! | - |
| 611 | \overload | - |
| 612 | \since 4.6 | - |
| 613 | | - |
| 614 | If this function is called, the SSL errors given in \a errors | - |
| 615 | will be ignored. | - |
| 616 | | - |
| 617 | Note that you can set the expected certificate in the SSL error: | - |
| 618 | If, for instance, you want to issue a request to a server that uses | - |
| 619 | a self-signed certificate, consider the following snippet: | - |
| 620 | | - |
| 621 | \snippet code/src_network_access_qnetworkreply.cpp 0 | - |
| 622 | | - |
| 623 | Multiple calls to this function will replace the list of errors that | - |
| 624 | were passed in previous calls. | - |
| 625 | You can clear the list of errors you want to ignore by calling this | - |
| 626 | function with an empty list. | - |
| 627 | | - |
| 628 | \sa sslConfiguration(), sslErrors(), QSslSocket::ignoreSslErrors() | - |
| 629 | */ | - |
| 630 | void QNetworkReply::ignoreSslErrors(const QList<QSslError> &errors) | - |
| 631 | { | - |
| 632 | ignoreSslErrorsImplementation(errors); executed (the execution status of this line is deduced): ignoreSslErrorsImplementation(errors); | - |
| 633 | } executed: }Execution Count:10 | 10 |
| 634 | #endif | - |
| 635 | | - |
| 636 | /*! | - |
| 637 | \fn void QNetworkReply::sslConfigurationImplementation(QSslConfiguration &configuration) const | - |
| 638 | \since 5.0 | - |
| 639 | | - |
| 640 | This virtual method is provided to enable overriding the behavior of | - |
| 641 | sslConfiguration(). sslConfiguration() is a public wrapper for this method. | - |
| 642 | The configuration will be returned in \a configuration. | - |
| 643 | | - |
| 644 | \sa sslConfiguration() | - |
| 645 | */ | - |
| 646 | void QNetworkReply::sslConfigurationImplementation(QSslConfiguration &) const | - |
| 647 | { | - |
| 648 | } | - |
| 649 | | - |
| 650 | /*! | - |
| 651 | \fn void QNetworkReply::setSslConfigurationImplementation(const QSslConfiguration &configuration) | - |
| 652 | \since 5.0 | - |
| 653 | | - |
| 654 | This virtual method is provided to enable overriding the behavior of | - |
| 655 | setSslConfiguration(). setSslConfiguration() is a public wrapper for this method. | - |
| 656 | If you override this method use \a configuration to set the SSL configuration. | - |
| 657 | | - |
| 658 | \sa sslConfigurationImplementation(), setSslConfiguration() | - |
| 659 | */ | - |
| 660 | void QNetworkReply::setSslConfigurationImplementation(const QSslConfiguration &) | - |
| 661 | { | - |
| 662 | } | - |
| 663 | | - |
| 664 | /*! | - |
| 665 | \fn void QNetworkReply::ignoreSslErrorsImplementation(const QList<QSslError> &errors) | - |
| 666 | \since 5.0 | - |
| 667 | | - |
| 668 | This virtual method is provided to enable overriding the behavior of | - |
| 669 | ignoreSslErrors(). ignoreSslErrors() is a public wrapper for this method. | - |
| 670 | \a errors contains the errors the user wishes ignored. | - |
| 671 | | - |
| 672 | \sa ignoreSslErrors() | - |
| 673 | */ | - |
| 674 | void QNetworkReply::ignoreSslErrorsImplementation(const QList<QSslError> &) | - |
| 675 | { | - |
| 676 | } | - |
| 677 | | - |
| 678 | /*! | - |
| 679 | If this function is called, SSL errors related to network | - |
| 680 | connection will be ignored, including certificate validation | - |
| 681 | errors. | - |
| 682 | | - |
| 683 | \warning Be sure to always let the user inspect the errors | - |
| 684 | reported by the sslErrors() signal, and only call this method | - |
| 685 | upon confirmation from the user that proceeding is ok. | - |
| 686 | If there are unexpected errors, the reply should be aborted. | - |
| 687 | Calling this method without inspecting the actual errors will | - |
| 688 | most likely pose a security risk for your application. Use it | - |
| 689 | with great care! | - |
| 690 | | - |
| 691 | This function can be called from the slot connected to the | - |
| 692 | sslErrors() signal, which indicates which errors were | - |
| 693 | found. | - |
| 694 | | - |
| 695 | \sa sslConfiguration(), sslErrors(), QSslSocket::ignoreSslErrors() | - |
| 696 | */ | - |
| 697 | void QNetworkReply::ignoreSslErrors() | - |
| 698 | { | - |
| 699 | } | - |
| 700 | | - |
| 701 | /*! | - |
| 702 | \internal | - |
| 703 | */ | - |
| 704 | qint64 QNetworkReply::writeData(const char *, qint64) | - |
| 705 | { | - |
| 706 | return -1; // you can't write never executed: return -1; | 0 |
| 707 | } | - |
| 708 | | - |
| 709 | /*! | - |
| 710 | Sets the associated operation for this object to be \a | - |
| 711 | operation. This value will be returned by operation(). | - |
| 712 | | - |
| 713 | Note: the operation should be set when this object is created and | - |
| 714 | not changed again. | - |
| 715 | | - |
| 716 | \sa operation(), setRequest() | - |
| 717 | */ | - |
| 718 | void QNetworkReply::setOperation(QNetworkAccessManager::Operation operation) | - |
| 719 | { | - |
| 720 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 721 | d->operation = operation; executed (the execution status of this line is deduced): d->operation = operation; | - |
| 722 | } executed: }Execution Count:59 | 59 |
| 723 | | - |
| 724 | /*! | - |
| 725 | Sets the associated request for this object to be \a request. This | - |
| 726 | value will be returned by request(). | - |
| 727 | | - |
| 728 | Note: the request should be set when this object is created and | - |
| 729 | not changed again. | - |
| 730 | | - |
| 731 | \sa request(), setOperation() | - |
| 732 | */ | - |
| 733 | void QNetworkReply::setRequest(const QNetworkRequest &request) | - |
| 734 | { | - |
| 735 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 736 | d->request = request; executed (the execution status of this line is deduced): d->request = request; | - |
| 737 | } executed: }Execution Count:59 | 59 |
| 738 | | - |
| 739 | /*! | - |
| 740 | Sets the error condition to be \a errorCode. The human-readable | - |
| 741 | message is set with \a errorString. | - |
| 742 | | - |
| 743 | Calling setError() does not emit the error(QNetworkReply::NetworkError) | - |
| 744 | signal. | - |
| 745 | | - |
| 746 | \sa error(), errorString() | - |
| 747 | */ | - |
| 748 | void QNetworkReply::setError(NetworkError errorCode, const QString &errorString) | - |
| 749 | { | - |
| 750 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 751 | d->errorCode = errorCode; executed (the execution status of this line is deduced): d->errorCode = errorCode; | - |
| 752 | setErrorString(errorString); // in QIODevice executed (the execution status of this line is deduced): setErrorString(errorString); | - |
| 753 | } executed: }Execution Count:7 | 7 |
| 754 | | - |
| 755 | /*! | - |
| 756 | \since 4.8 | - |
| 757 | Sets the reply as \a finished. | - |
| 758 | | - |
| 759 | After having this set the replies data must not change. | - |
| 760 | | - |
| 761 | \sa isFinished() | - |
| 762 | */ | - |
| 763 | void QNetworkReply::setFinished(bool finished) | - |
| 764 | { | - |
| 765 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 766 | d->isFinished = finished; executed (the execution status of this line is deduced): d->isFinished = finished; | - |
| 767 | } executed: }Execution Count:934 | 934 |
| 768 | | - |
| 769 | | - |
| 770 | /*! | - |
| 771 | Sets the URL being processed to be \a url. Normally, the URL | - |
| 772 | matches that of the request that was posted, but for a variety of | - |
| 773 | reasons it can be different (for example, a file path being made | - |
| 774 | absolute or canonical). | - |
| 775 | | - |
| 776 | \sa url(), request(), QNetworkRequest::url() | - |
| 777 | */ | - |
| 778 | void QNetworkReply::setUrl(const QUrl &url) | - |
| 779 | { | - |
| 780 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 781 | d->url = url; executed (the execution status of this line is deduced): d->url = url; | - |
| 782 | } executed: }Execution Count:87 | 87 |
| 783 | | - |
| 784 | /*! | - |
| 785 | Sets the known header \a header to be of value \a value. The | - |
| 786 | corresponding raw form of the header will be set as well. | - |
| 787 | | - |
| 788 | \sa header(), setRawHeader(), QNetworkRequest::setHeader() | - |
| 789 | */ | - |
| 790 | void QNetworkReply::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) | - |
| 791 | { | - |
| 792 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 793 | d->setCookedHeader(header, value); executed (the execution status of this line is deduced): d->setCookedHeader(header, value); | - |
| 794 | } executed: }Execution Count:104 | 104 |
| 795 | | - |
| 796 | /*! | - |
| 797 | Sets the raw header \a headerName to be of value \a value. If \a | - |
| 798 | headerName was previously set, it is overridden. Multiple HTTP | - |
| 799 | headers of the same name are functionally equivalent to one single | - |
| 800 | header with the values concatenated, separated by commas. | - |
| 801 | | - |
| 802 | If \a headerName matches a known header, the value \a value will | - |
| 803 | be parsed and the corresponding parsed form will also be set. | - |
| 804 | | - |
| 805 | \sa rawHeader(), header(), setHeader(), QNetworkRequest::setRawHeader() | - |
| 806 | */ | - |
| 807 | void QNetworkReply::setRawHeader(const QByteArray &headerName, const QByteArray &value) | - |
| 808 | { | - |
| 809 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 810 | d->setRawHeader(headerName, value); executed (the execution status of this line is deduced): d->setRawHeader(headerName, value); | - |
| 811 | } executed: }Execution Count:4216 | 4216 |
| 812 | | - |
| 813 | /*! | - |
| 814 | Sets the attribute \a code to have value \a value. If \a code was | - |
| 815 | previously set, it will be overridden. If \a value is an invalid | - |
| 816 | QVariant, the attribute will be unset. | - |
| 817 | | - |
| 818 | \sa attribute(), QNetworkRequest::setAttribute() | - |
| 819 | */ | - |
| 820 | void QNetworkReply::setAttribute(QNetworkRequest::Attribute code, const QVariant &value) | - |
| 821 | { | - |
| 822 | Q_D(QNetworkReply); executed (the execution status of this line is deduced): QNetworkReplyPrivate * const d = d_func(); | - |
| 823 | if (value.isValid()) evaluated: value.isValid()| yes Evaluation Count:3029 | yes Evaluation Count:8 |
| 8-3029 |
| 824 | d->attributes.insert(code, value); executed: d->attributes.insert(code, value);Execution Count:3029 | 3029 |
| 825 | else | - |
| 826 | d->attributes.remove(code); executed: d->attributes.remove(code);Execution Count:8 | 8 |
| 827 | } | - |
| 828 | | - |
| 829 | QT_END_NAMESPACE | - |
| 830 | | - |
| | |