Setting User And Password For Qt WebView & WebEngine Diectly



  • Hi. I wanted to set user and password for Qt WebView & WebEngine directly. I have my own VPS and I have setup HttpProxy on it. My application has a web browser and I want that web browser to use the http proxy. I've tried setting application proxy but the web view raises a dialog asking for user and password. I want to set user and password in the code so that users won't have to deal with the dialog.



  • Any Ideas?



  • @shahriar25 are you talking about user/password for a proxy, so your QWebView application can traverse such proxy, which requires authentication, and reach the desired destination?
    If so, I imagine you may need to rely on using a QNetworkProxyFactory that once configured properly (for instance, to use the system proxy's settings) is then set to the QNetworkAccessManager that makes the connection



  • @Pablo-J-Rogina
    Hi
    Thank you for replying and helping.
    I tried using QNetworkProxyFactory:

    class ProxyFactory : public QNetworkProxyFactory
    {
    public:
    QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query)
    {
    Q_UNUSED(query)

    	QNetworkProxy proxy;
    
    	proxy.setType(QNetworkProxy::HttpProxy);
                // set proxy variables here
    
    	return QList<QNetworkProxy>() << proxy;
    }
    

    };

    and then:
    QNetworkProxyFactory::setApplicationProxyFactory(new ProxyFactory());

    but this doesn't work. I mean it proxies QNetworkAccessManager and stuff but it is not what I want.
    I want the webview to use this proxy and not raise a dialog and ask the user for credentials.



  • @shahriar25 maybe the trick here is that QWebPage within your QWebView is using its own QNetworkAccessManager, so perhaps by doing:

    myWebView->page()->setNetworkAccessManager(yourQNAM)
    

    will cause the webview to use your QNAM with your proxy settings.



  • @Pablo-J-Rogina
    Well see that is the problem. I'm working with qml and using webview in it



  • @shahriar25 are you saying you're using this QML WebView component? If so, on one side you should have stated your issue better :-) and you may need to work with the underlying QNetworkAccessManager of QML, see this post as a guideline.



  • @Pablo-J-Rogina
    Hi. I'm sorry for late reply
    I'm sorry if I left out using qml. It wasn't intentional
    I tried this:

    class QmlNAMFactory : public QQmlNetworkAccessManagerFactory
    {
    virtual QNetworkAccessManager *create(QObject *parent)
    {
    QNetworkAccessManager *nam = new QNetworkAccessManager(parent);
    QNetworkProxy proxy;

    	proxy.setType(QNetworkProxy::HttpProxy);
                // proxy info here
    
    	nam->setProxy(proxy);
    	return nam;
    }
    

    };

    QQmlApplicationEngine engine;
    engine.setNetworkAccessManagerFactory(new QmlNAMFactory);

    but this has no effect on webview. It doesn't change a thing
    I'm sorry the function was returning nullptr I edited it. I did that just to text the effect



  • Isn't there anything that I can do?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.