Como posso usar o QT para obter o código HTML da página redirecionada?
-
24-09-2019 - |
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";
}
}
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