Unsolved 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?
-
Hi.
Did you solve the problem?
I am hitting the same problem, i need to set a header to every QML WebView request.
Setting the network access manager on
QQmlApplicationEngine
does not callMyNetworkAccessManagerFactory::create
.
Seems WebView is not usingQNetworkAccessManager
at all.Is this possible at all?
thanks for hints.