Pregunta

Estoy tratando de usar Qt para descargar el código html de la siguiente URL:

http: //www.ncbi .nlm.nih.gov / Entrez / query.fcgi? db = nucleótido y cmd = search & plazo = AB100362

Esta URL volver a dirigir a

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

Trato de hacerlo siguiendo manera, pero no puedo hacer nada. funciona por alguna página web como www.google.com, pero no para esta página NCBI. ¿hay alguna manera de conseguir 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";
        }

}
¿Fue útil?

Solución

Esa página parece tener una redirección.

A partir de la documentación de Qt para 4.6:

  

Nota: Cuando el protocolo HTTP devuelve una   redirección se le informa de ningún error.   Puede comprobar si hay una redirección   con el   QNetworkRequest :: RedirectionTargetAttribute   atributo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top