Problem mit der Website mit QNetworkAccessManager Investing.com
Ich versuche, mithilfe von QNetworkAccessManager automatisch einige Informationen voninvesting.com zu lesen. Ich kann von anderen Websites lesen, aber diese Website enthält einige Webmaster-Tools, auf die ich zugreifen möchte.https://www.investing.com/webmaster-tools/
Ich benutze diese Abfrage, die in einem Browser funktioniert. Hier ist mein Anforderungscode
class InvestingAPI: public QObject
{
Q_OBJECT
public:
InvestingAPI();
QueryTechnicals(QString Symbol, int TF1Minites);
signals:
// void NewTechnicalSummary(int Timeframe, QString Symbol, QString Summary);
private slots:
void onData(QNetworkReply *reply);
private:
QNetworkAccessManager qnam ;
};
InvestingAPI::InvestingAPI()
{
connect (& qnam, SIGNAL (fertig (QNetworkReply *)), this, SLOT (onData (QNetworkReply *));
connect (& qnam, SIGNAL (verschlüsselt (QNetworkReply *)), this, SLOT (onData (QNetworkReply *)));
}
InvestingAPI::QueryTechnicals(QString Symbol, int TF1Minites)
{
QString Query;
Query = "http://ssltsw.forexprostools.com/index.php?timeframe=300&lang=1&forex=1&commodities=8830,8836,8831,8849,8833,8862,8832&indices=175,166,172,27,179,170,174&stocks=334,345,346,347,348,349,350&tabs=1,2,3,4%22%20width=%22317%22%20height=%22467%22%3E%3C/iframe%3E%3Cdiv%20class=%22poweredBy%22%20style=%22font-family:arial,helvetica,sans-serif;%20direction:ltr;%22%3E%3Cspan%20style=%22font-size:%2011px;color:%20&selectedTabId=QBS_1";
QNetworkRequest Request;
Request.setSslConfiguration(QSslConfiguration::defaultConfiguration());
connect(&qnam,SIGNAL(finished(QNetworkReply*)),this,SLOT(onData(QNetworkReply*)));
Request.setUrl(QUrl(Query));
Request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");
qnam.get(Request);
}
Und ich habe Veranstaltung
void InvestingAPI::onData(QNetworkReply *reply){
// find data type
// decode and return data to caller
if(reply->error() != QNetworkReply::NoError){
qDebug() << "Error";
qDebug() << reply->errorString();
}
QString html = QString::fromUtf8(reply->readAll());
qDebug() << html;
QString SubData;
}
Ich erhalte keine Fehlermeldung, aber anstelle der HTML-Antwort erhalte ich eine leere Zeichenfolge.
Bitte helfen Sie, da ich keine Ahnung habe, warum dies hier nicht funktioniert, sondern im Browser.
Antworten
Standardmäßig verarbeitet Qt Network Weiterleitungen nicht wie andere Tools. Aus diesem Grund erhalten Sie leere Daten (wenn Sie den Header "Standort" aktivieren, wird die umgeleitete URL angezeigt). In diesem Fall soll die Umleitung aktiviert werden:
Request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);