Пользовательский агент Qt QWebView класса - PullRequest
9 голосов
/ 11 октября 2010

Есть ли простой способ настроить User-Agent, который использует класс QWebView?

Единственная релевантная ссылка, которую я нашел в поиске, была

http://www.qtforum.org/article/27073/how-to-set-user-agent-in-qwebview.html

Я изучаю C ++ / Qt прямо сейчас, и я не совсем понимаю, что объясняется на этом сайте. Может, кто-нибудь знает простой способ сделать это? Или может помочь мне понять этот код?

Ответы [ 2 ]

13 голосов
/ 11 октября 2010

Qt позволяет вам предоставлять пользовательский агент на основе URL, а не один пользовательский агент, независимо от того, какой это URL.Идея заключается в том, чтобы возвращать пользовательский агент при каждом создании новой веб-страницы:

class UserAgentWebPage : public QWebPage {
    QString userAgentForUrl(const QUrl &url ) const {
        return QString("My User Agent");
    }
};

Чтобы использовать эту страницу вместо создаваемой стандартной страницы, вы можете установить эту страницу в элементе управления браузера.возражать перед выполнением запроса:

yourWebView->setPage(new UserAgentWebPage(parent));

Я бы на самом деле ожидал, что где-то будет присутствовать фабрика, которая будет гарантировать, что созданная веб-страница всегда определенного типа, но я ее не видел.

Еще один вариант должен заключаться в установке заголовка пользовательского агента в QNetworkRequest :

QNetworkRequest request = new QNetworkRequest();
request->setRawHeader(
    QString("User-Agent").toAscii(),
    QString("Your User Agent").toAscii()
    );
// ... set the URL, etc.
yourWebView->load(request);

Вы на самом деле хотите проверить, является ли он toAscii() или toUtf8() или однимиз других вариантов, так как я не уверен точно, что позволяет стандарт HTTP.

2 голосов
/ 06 октября 2012

просто

class myWebPage : public QWebPage
{
    virtual QString userAgentForUrl(const QUrl& url) const {
        return "your user agent";
    }
};

//Attention here is new myWebPage() not new myWebPage(parent) 
UI->webView->setPage(new myWebPage());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...