Как я могу использовать Qt для получения html-кода перенаправленной страницы? - PullRequest
2 голосов
/ 04 апреля 2010

Я пытаюсь использовать Qt для загрузки html-кода со следующего URL:

http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=nucleotide&cmd=search&term=AB100362

этот URL будет перенаправлен на

www.ncbi.nlm.nih.gov / nuccore / 27884304

Я пытаюсь сделать это следующим образом, но ничего не могу получить. это работает для некоторой веб-страницы, такой как www.google.com, но не для этой страницы NCBI. есть ли способ получить эту страницу ??

QNetworkReply::NetworkError downloadURL(const QUrl &url, QByteArray &data)
{
    QNetworkAccessManager manager;
    QNetworkRequest request(url);
    QNetworkReply *reply = manager.get(request);

    QEventLoop loop;
    QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    loop.exec();

    if (reply->error() != QNetworkReply::NoError)
    {
        return reply->error();
    }
    data = reply->readAll();
    delete reply;
    return QNetworkReply::NoError;
}

void GetGi()
{
        int pos;

        QString sGetFromURL = "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi";
        QUrl url(sGetFromURL);
        url.addQueryItem("db", "nucleotide");
        url.addQueryItem("cmd", "search");
        url.addQueryItem("term", "AB100362");

        QByteArray InfoNCBI;
        int errorCode = downloadURL(url, InfoNCBI);
        if (errorCode != 0 )
        {
            QMessageBox::about(0,tr("Internet Error "), tr("Internet Error %1: Failed to connect to NCBI.\t\nPlease check your internect connection.").arg(errorCode));
            return "ERROR";
        }

}

1 Ответ

3 голосов
/ 04 апреля 2010

Похоже, что эта страница перенаправлена.

Из документации Qt для 4.6:

Примечание. Когда протокол HTTP возвращает о перенаправлении ошибок не сообщается. Вы можете проверить, есть ли перенаправление с QNetworkRequest :: RedirectionTargetAttribute атрибут.

...