summaryrefslogtreecommitdiffstats
path: root/examples/network/doc/src/http.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'examples/network/doc/src/http.qdoc')
-rw-r--r--examples/network/doc/src/http.qdoc67
1 files changed, 66 insertions, 1 deletions
diff --git a/examples/network/doc/src/http.qdoc b/examples/network/doc/src/http.qdoc
index 1a70187369..815775c51d 100644
--- a/examples/network/doc/src/http.qdoc
+++ b/examples/network/doc/src/http.qdoc
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
@@ -35,4 +35,69 @@
from remote hosts.
\image http-example.png
+
+ The main work of this example is done in the HttpWindow class.
+ Thus we will focus on that.
+
+ \snippet http/httpwindow.cpp qnam-download
+
+ Using QNetworkAccessManager, we begin the download of a resource as
+ pointed to by the \c url. If you are unfamiliar with it or the function used,
+ QNetworkAccessManager::get(), or simply want to look into it in more detail,
+ take a look at its documentation and the documentation for
+ QNetworkReply and QNetworkRequest.
+
+ \snippet http/httpwindow.cpp connecting-reply-to-slots
+
+ Above, we connect some of the reply's signals to slots in the class.
+ These slots will take care of both incoming data and finalizing the
+ download/handling errors.
+
+ \snippet http/httpwindow.cpp networkreply-readyread-1
+
+ As for handling the incoming data, since we don't know the maximum
+ download size of any potential input and we don't want to exhaust
+ the memory of any computer which might run the example program, we
+ handle incoming data in QNetworkReply::readyRead() instead of in
+ QNetworkReply::finished().
+
+ \snippet http/httpwindow.cpp networkreply-readyread-2
+
+ Then we write the data to file as it arrives. It is less convenient,
+ but the application will consume less memory at its peak!
+
+ \snippet http/httpwindow.cpp sslerrors-1
+
+ With the QNetworkReply::sslErrors() signal we can also handle errors that may
+ occur during the TLS handshake when connecting to secure websites (i.e. HTTPS).
+
+ \snippet http/httpwindow.cpp sslerrors-2
+
+ In this example, we show a dialog to the user so that they can choose whether
+ or not to ignore the errors.
+
+ \snippet http/httpwindow.cpp networkreply-error-handling-1
+ \snippet http/httpwindow.cpp networkreply-error-handling-2
+
+ If an error occurs then QNetworkReply will emit the
+ QNetworkReply::errorOccurred() signal, followed by the
+ QNetworkReply::finished() signal. In this example, we only connect to the
+ latter. We handle any potential error(s) in the respective slot by deleting
+ the file we were writing to, and display the error with our status label.
+
+ \snippet http/httpwindow.cpp qnam-auth-required-1
+
+ If you connect to a website that uses
+ \l{https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication}{HTTP authentication},
+ assuming you didn't supply the credentials that should be used ahead of time,
+ you can handle missing credentials when the website requests it. With QNetworkAccessManager,
+ we do this in a slot connected to the signal
+ QNetworkAccessManager::authenticationRequired(). We make this connection once,
+ in the constructor.
+
+ \snippet http/httpwindow.cpp qnam-auth-required-2
+
+ In this example, we show a dialog where the user can either insert a
+ username and password, or cancel. Canceling causes the request to fail.
+
*/