¿Cómo puedo usar Qt para obtener el código HTML de la página redireccionada?
-
24-09-2019 - |
Pregunta
Estoy tratando de usar Qt para descargar el código html de la siguiente URL:
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";
}
}
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