QNetworkAccessManager를 사용하여 웹 페이지를 열려고합니다. 일부 페이지에서는 제대로 작동하지만 다른 페이지에서는 작동하지 않습니다. 실제 브라우저 사용자 에이전트를 설정하려고 시도했지만, 여전히 작동하지 않습니다 (예 : http://www.erepublik.com). 이 (데이터를 반환 http://www.hardwarebase.net 같은 사이트 작동 나를 귀찮게 무슨QNetworkAccessManager. 제점
<html><head><meta http-equiv="refresh" content="0;url=http://www.erepublik.com/en"/></head></html><html><head><meta http-equiv="refresh" content="0;url=http://www.erepublik.com/en"/></head></html>
을 이제 :
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
QNetworkRequest *request = new QNetworkRequest(QUrl("http://www.erepublik.com"));
request->setRawHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux i686 (x86_64); "
"en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1");
request->setRawHeader("charset", "utf-8");
request->setRawHeader("Connection", "keep-alive");
manager->get(*request);
...
void MainWindow::replyFinished(QNetworkReply *reply)
{
QString data = reply->readAll();
qDebug() << data;
}
데이터 다음과 같다 : 여기 코드는 일반 HTML 소스), eRepublik에서는 작동하지 않습니다.
나는 정확하게하고 싶은 것을 알고 싶어하는 사람들을 위해 - 나는 eRepublik 첫 페이지에서 국가의 인구수를 얻고 싶다.
왜 이런 생각입니까? 미리 감사드립니다.
감사합니다. 당신이 Goz보다 빠르기 때문에 나는 대답을 선택했습니다. QNetworkAccessManager가 이러한 재 지정을 자동으로 처리 할 수 있습니까? – Ahmed
QNetworkAccessManager의 metaDataChanged 신호에 연결하여 상태 코드가 HTTP 리디렉션 코드인지 확인하십시오 –
감사합니다, 카밀! – Ahmed