Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. [solved] Qt 5.4 - Proxy settings for QtWebEngine
QtWS25 Last Chance

[solved] Qt 5.4 - Proxy settings for QtWebEngine

Scheduled Pinned Locked Moved Mobile and Embedded
14 Posts 4 Posters 12.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    nando76
    wrote on last edited by
    #1

    Hi,

    is there a way to use a proxy with authentication for QtWebEngine module?

    It seems NetworkAccessManager is not used...

    Greetings
    Nando

    1 Reply Last reply
    0
    • N Offline
      N Offline
      nando76
      wrote on last edited by
      #2

      Got it:

      @
      connect(m_webView->page(),
      SIGNAL(proxyAuthenticationRequired(const QUrl &, QAuthenticator *, const QString &)),
      this, SLOT(proxyAuthenticationRequired(const QUrl &, QAuthenticator *, const QString &)));
      @

      And then in the slot something like this:
      @void AirportDisplayer::proxyAuthenticationRequired(const QUrl &, QAuthenticator *auth, const QString &)
      {
      qDebug() << "AirportDisplayer::proxyAuthenticationRequired:";

      auth->setUser(FlightbookManager::instance().pilot()->proxyUsername());
      auth->setPassword(FlightbookManager::instance().pilot()->proxyPassword());
      

      }
      @

      1 Reply Last reply
      0
      • M Offline
        M Offline
        masum
        wrote on last edited by
        #3

        Thanks for sharing the solution.

        Kind Regards

        Md. Rashidul Hasan
        Software Architect
        OnnoRokom Software Ltd.
        Cell: 8801836885252

        1 Reply Last reply
        0
        • P Offline
          P Offline
          pcushman
          wrote on last edited by
          #4

          Can you share how you are setting up the proxy settings (host and port) for the QtWebEngine? My QWebEngineView does not honor the proxy settings made via the QNetworkProxy::setApplicationProxy(proxy) call.
          thanks
          Paul

          P 1 Reply Last reply
          0
          • P Offline
            P Offline
            pcushman
            wrote on last edited by
            #5

            Can you share how you are setting up the proxy settings (host and port) for the QtWebEngine? My QWebEngineView does not honor the proxy settings made via the QNetworkProxy::setApplicationProxy(proxy) call.
            thanks
            Paul

            1 Reply Last reply
            0
            • N Offline
              N Offline
              nando76
              wrote on last edited by
              #6

              Hi Paul.
              i do it like this:

              In my class i have a member of:
              @
              QNetworkProxy m_networkProxy;
              @

              in constructor of my class i create the QNetworkAccessManager:
              @
              m_networkAccessManager = new QNetworkAccessManager;
              @

              and the after loading proxy host, port,username and password i set it like this:
              @
              if (m_proxyEnabled) {
              m_networkProxy.setType(QNetworkProxy::HttpProxy);
              m_networkProxy.setHostName(m_ProxyHost);
              m_networkProxy.setPort(m_ProxyPort);
              m_networkProxy.setUser(m_ProxyUsername);
              m_networkProxy.setPassword(m_ProxyPassword);
              } else {
              m_networkProxy.setType(QNetworkProxy::NoProxy);
              }

              // Apply the proxy to the QNetworkAccessManager
              QNetworkProxy::setApplicationProxy(m_networkProxy);
              m_pNetworkAccessManager->setProxy(m_networkProxy);
              

              @

              Hope that helps ;-)

              Greetings
              Nando

              1 Reply Last reply
              0
              • N Offline
                N Offline
                nando76
                wrote on last edited by
                #7

                Hi Paul.
                i do it like this:

                In my class i have a member of:
                @
                QNetworkProxy m_networkProxy;
                @

                in constructor of my class i create the QNetworkAccessManager:
                @
                m_networkAccessManager = new QNetworkAccessManager;
                @

                and the after loading proxy host, port,username and password i set it like this:
                @
                if (m_proxyEnabled) {
                m_networkProxy.setType(QNetworkProxy::HttpProxy);
                m_networkProxy.setHostName(m_ProxyHost);
                m_networkProxy.setPort(m_ProxyPort);
                m_networkProxy.setUser(m_ProxyUsername);
                m_networkProxy.setPassword(m_ProxyPassword);
                } else {
                m_networkProxy.setType(QNetworkProxy::NoProxy);
                }

                // Apply the proxy to the QNetworkAccessManager
                QNetworkProxy::setApplicationProxy(m_networkProxy);
                m_pNetworkAccessManager->setProxy(m_networkProxy);
                

                @

                Hope that helps ;-)

                Greetings
                Nando

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  pcushman
                  wrote on last edited by
                  #8

                  Hi Nando
                  I tried your suggestions but it did not work.
                  I have the following class and associated methods:

                  @
                  class LoginWebEngineView : public QWebEngineView
                  {
                  Q_OBJECT

                  public:
                  explicit LoginWebEngineView(QWidget *parent = 0, QSettings *settings = 0);
                  ~LoginWebEngineView();
                  void setProxy();

                  private:
                  QSettings* m_pSettings;
                  QNetworkProxy m_networkProxy;
                  QNetworkAccessManager *m_pNetworkAccessManager;
                  };

                  LoginWebEngineView::LoginWebEngineView(QWidget *parent, QSettings *settings) :
                  QWebEngineView(parent)
                  {
                  m_pSettings = settings;
                  m_pNetworkAccessManager = new QNetworkAccessManager;

                  this->setParent(parent);
                  setProxy();
                  

                  }

                  void
                  LoginWebEngineView::setProxy() {
                  if (m_pSettings->value("proxy_enabled", false).toBool()) {
                  QString host = m_pSettings->value("proxy_host", "").toString();
                  quint16 port = m_pSettings->value("proxy_port", 0).toUInt();
                  QString user = m_pSettings->value("proxy_user", "").toString();
                  QString password = m_pSettings->value("proxy_pass", "").toString();

                      m_networkProxy.setType(QNetworkProxy::HttpProxy);
                      m_networkProxy.setHostName(host);
                      m_networkProxy.setPort(port);
                      m_networkProxy.setUser(user);
                      m_networkProxy.setPassword(password);
                  } else {
                      m_networkProxy.setType(QNetworkProxy::NoProxy);
                  }
                  
                  // Apply the proxy to the QNetworkAccessManager
                  QNetworkProxy::setApplicationProxy(m_networkProxy);
                  m_pNetworkAccessManager->setProxy(m_networkProxy);
                  

                  }

                  @

                  If you see anything obvious, please let me know.
                  thanks
                  Paul

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    pcushman
                    wrote on last edited by
                    #9

                    Hi Nando
                    I tried your suggestions but it did not work.
                    I have the following class and associated methods:

                    @
                    class LoginWebEngineView : public QWebEngineView
                    {
                    Q_OBJECT

                    public:
                    explicit LoginWebEngineView(QWidget *parent = 0, QSettings *settings = 0);
                    ~LoginWebEngineView();
                    void setProxy();

                    private:
                    QSettings* m_pSettings;
                    QNetworkProxy m_networkProxy;
                    QNetworkAccessManager *m_pNetworkAccessManager;
                    };

                    LoginWebEngineView::LoginWebEngineView(QWidget *parent, QSettings *settings) :
                    QWebEngineView(parent)
                    {
                    m_pSettings = settings;
                    m_pNetworkAccessManager = new QNetworkAccessManager;

                    this->setParent(parent);
                    setProxy();
                    

                    }

                    void
                    LoginWebEngineView::setProxy() {
                    if (m_pSettings->value("proxy_enabled", false).toBool()) {
                    QString host = m_pSettings->value("proxy_host", "").toString();
                    quint16 port = m_pSettings->value("proxy_port", 0).toUInt();
                    QString user = m_pSettings->value("proxy_user", "").toString();
                    QString password = m_pSettings->value("proxy_pass", "").toString();

                        m_networkProxy.setType(QNetworkProxy::HttpProxy);
                        m_networkProxy.setHostName(host);
                        m_networkProxy.setPort(port);
                        m_networkProxy.setUser(user);
                        m_networkProxy.setPassword(password);
                    } else {
                        m_networkProxy.setType(QNetworkProxy::NoProxy);
                    }
                    
                    // Apply the proxy to the QNetworkAccessManager
                    QNetworkProxy::setApplicationProxy(m_networkProxy);
                    m_pNetworkAccessManager->setProxy(m_networkProxy);
                    

                    }

                    @

                    If you see anything obvious, please let me know.
                    thanks
                    Paul

                    1 Reply Last reply
                    0
                    • N Offline
                      N Offline
                      nando76
                      wrote on last edited by
                      #10

                      Hi,
                      i see you have enhirted your class from QWebEngineView.
                      Try to inherit your class just from QObject and add a member for the
                      QWebEngineView which gets instantiated before the set proxy stuff:
                      @
                      QWebEngineView* m_webEngineView;
                      @

                      Maybe QWebEngine is looking for proxy settings while creation and there are no proxy stettings at construction time.

                      Greetings
                      Nando

                      1 Reply Last reply
                      0
                      • N Offline
                        N Offline
                        nando76
                        wrote on last edited by
                        #11

                        Hi,
                        i see you have enhirted your class from QWebEngineView.
                        Try to inherit your class just from QObject and add a member for the
                        QWebEngineView which gets instantiated before the set proxy stuff:
                        @
                        QWebEngineView* m_webEngineView;
                        @

                        Maybe QWebEngine is looking for proxy settings while creation and there are no proxy stettings at construction time.

                        Greetings
                        Nando

                        1 Reply Last reply
                        0
                        • P Offline
                          P Offline
                          pcushman
                          wrote on last edited by
                          #12

                          That did not help. My dialog is created in QtCreator, is it possible that this could be part of the issue?
                          thanks
                          Paul

                          1 Reply Last reply
                          0
                          • P Offline
                            P Offline
                            pcushman
                            wrote on last edited by
                            #13

                            That did not help. My dialog is created in QtCreator, is it possible that this could be part of the issue?
                            thanks
                            Paul

                            1 Reply Last reply
                            0
                            • P pcushman

                              Can you share how you are setting up the proxy settings (host and port) for the QtWebEngine? My QWebEngineView does not honor the proxy settings made via the QNetworkProxy::setApplicationProxy(proxy) call.
                              thanks
                              Paul

                              P Offline
                              P Offline
                              Peng
                              wrote on last edited by
                              #14

                              @pcushman
                              Hi, have you solved your proxy problem now? Because I meet the same question as you.

                              Thanks,
                              Peng

                              1 Reply Last reply
                              0

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved