2010-10-11 10 views

Odpowiedz

12

Qt umożliwia podanie agenta użytkownika na podstawie adresu URL zamiast pojedynczego klienta użytkownika, bez względu na adres URL. Pomysł jest więc, aby powrócić agenta użytkownika w każdej chwili nowa strona internetowa jest utworzona:

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

W celu korzystania z tej strony zamiast standardowej strony, który jest tworzony, można ustawić tę stronę na obiekcie kontrolnym przeglądarka przed składającego wniosek:

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

bym rzeczywiście spodziewać się fabryka być obecny gdzieś, że gwarantuje, że strona internetowa tworzona jest zawsze pewnego rodzaju, ale nie widzę jeden.

Jeszcze inna opcja powinna być ustawiony nagłówek agenta użytkownika w QNetworkRequest:

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

Można by rzeczywiście chcą, by sprawdzić, czy to toAscii() lub toUtf8() lub jeden z pozostałych wariantów, jak nie jestem pewien dokładnie co pozwala standard HTTP.

+0

Dzięki Kaleb! Tego właśnie szukałem. –

2

prostu

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()); 
Powiązane problemy