Pergunta

Estou tentando usar o QT para baixar o código HTML do URL a seguir:

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

Este URL irá redirecionar para

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

Tento fazer isso da seguinte maneira, mas não consigo conseguir nada. Funciona para algumas páginas da Web, como www.google.com, mas não para esta página do NCBI. Existe alguma maneira de obter esta página ??

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";
        }

}
Foi útil?

Solução

Essa página parece ter um redirecionamento.

Dos documentos QT para 4.6:

Nota: Quando o protocolo HTTP retornar um redirecionamento, nenhum erro será relatado. Você pode verificar se há um redirecionamento com o atributo QNETWORKREQUEST :: RedirectionTargetAttribute.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top