HTTP Example: Add proxy handling
If a proxy is configured on the system then we will request credentials if needed. Task-number: QTBUG-108874 Fixes: QTBUG-106245 Pick-to: 6.5 Change-Id: Icbea491492cde4634421b1a1e722a3768d56dec8 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This commit is contained in:
parent
d18b5195c1
commit
5006fddd33
@ -51,6 +51,10 @@ HttpWindow::HttpWindow(QWidget *parent)
|
||||
connect(&qnam, &QNetworkAccessManager::authenticationRequired,
|
||||
this, &HttpWindow::slotAuthenticationRequired);
|
||||
//! [qnam-auth-required-1]
|
||||
#if QT_CONFIG(networkproxy)
|
||||
connect(&qnam, &QNetworkAccessManager::proxyAuthenticationRequired,
|
||||
this, &HttpWindow::slotProxyAuthenticationRequired);
|
||||
#endif
|
||||
|
||||
QFormLayout *formLayout = new QFormLayout;
|
||||
urlLineEdit->setClearButtonEnabled(true);
|
||||
@ -277,3 +281,25 @@ void HttpWindow::sslErrors(const QList<QSslError> &errors)
|
||||
}
|
||||
//! [sslerrors-2]
|
||||
#endif
|
||||
|
||||
#if QT_CONFIG(networkproxy)
|
||||
void HttpWindow::slotProxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
|
||||
{
|
||||
QDialog authenticationDialog;
|
||||
Ui::Dialog ui;
|
||||
ui.setupUi(&authenticationDialog);
|
||||
authenticationDialog.adjustSize();
|
||||
ui.siteDescription->setText(tr("A network proxy at %1 is requesting credentials for realm: %2")
|
||||
.arg(proxy.hostName(), authenticator->realm()));
|
||||
|
||||
// If the user passed credentials in the URL to http_proxy or similar they may be available to
|
||||
// us. Otherwise this will just leave the fields empty
|
||||
ui.userEdit->setText(proxy.user());
|
||||
ui.passwordEdit->setText(proxy.password());
|
||||
|
||||
if (authenticationDialog.exec() == QDialog::Accepted) {
|
||||
authenticator->setUser(ui.userEdit->text());
|
||||
authenticator->setPassword(ui.passwordEdit->text());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -19,6 +19,9 @@ class QSslError;
|
||||
class QAuthenticator;
|
||||
class QNetworkReply;
|
||||
class QCheckBox;
|
||||
#if QT_CONFIG(networkproxy)
|
||||
class QNetworkProxy;
|
||||
#endif
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
@ -52,6 +55,9 @@ private slots:
|
||||
#if QT_CONFIG(ssl)
|
||||
void sslErrors(const QList<QSslError> &errors);
|
||||
#endif
|
||||
#if QT_CONFIG(networkproxy)
|
||||
void slotProxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
|
||||
#endif
|
||||
|
||||
private:
|
||||
std::unique_ptr<QFile> openFileForWrite(const QString &fileName);
|
||||
|
Loading…
Reference in New Issue
Block a user