elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda Networkaccesmanager de Qt.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda Networkaccesmanager de Qt.  (Leído 2,678 veces)
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Duda Networkaccesmanager de Qt.
« en: 15 Julio 2013, 19:31 pm »

Tengo un código que lee unas urls de un archivo y luego con por el método GET descarga las webs  y las guarda


Código:
    std::cout << urlname;
    manager = new QNetworkAccessManager(this);
    QUrl url = QUrl(urlname.c_str());
    connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onManagerFinished(QNetworkReply*)));
    manager->get(QNetworkRequest(url));
                std::cin.get();


Aqui es cuando descarga las webs
Código
  1. void downloader::onManagerFinished(QNetworkReply *r)
  2. {
  3.    QString filename=filename0.c_str(); //filename0 es el nombre del archivo que se llama temp+i (temp1,temp2,temp3)
  4.    QFile file( filename );
  5.    if ( file.open(QIODevice::ReadWrite) )
  6.    {
  7.        QTextStream stream( &file );
  8.        stream << r->readAll() << endl;
  9.    }
  10.    file.close();
  11.    delete r;
  12.    delete manager;
  13.    downloader(); //Esto representa la función que hay más arriba para que descargue la siguiente URL
  14. }
  15.  

EL problema es que la segunda vez que entra en la función de guardar el archivo no hace nada.
coge la primera url la guarda coge la segunda url pero ya no hace nada más


En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Duda Networkaccesmanager de Qt.
« Respuesta #1 en: 15 Julio 2013, 22:21 pm »

Podrías hacer un For para repetir la parte que funciona cambiándole los parámetros para la nueva url, no se me ocurre como arreglarlo. Pruébalo como un apaño temporal a ver si funciona.


En línea

I like to test things.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Duda Networkaccesmanager de Qt.
« Respuesta #2 en: 16 Julio 2013, 00:49 am »

De esto:

Código
  1. void downloader::onManagerFinished(QNetworkReply *r)

Deduzco que la clase en la que estás trabajando se llama "downloader", y que estás llamando al constructor de la clase desde la clase misma. Esto puede ser lo que ocasiona el problema, míralo, y si no postea más código porque está un poco incompleto.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda Networkaccesmanager de Qt.
« Respuesta #3 en: 16 Julio 2013, 00:55 am »

Coloque el código dentro del bucle pero entonces coge las 3 urls pero no descarga el contenido de las 3 sino solo de la primera
Código
  1.    int i=0;
  2.  
  3. downloader::downloader(QObject *parent) :
  4.    QObject(parent)
  5. {
  6.    std::ifstream urls;
  7.    urls.open("fuck/config",std::ios::binary);
  8.    std::string urlname;
  9.  
  10.    char c;
  11.    urls.seekg(0, std::ios::end);
  12.    long size = urls.tellg();
  13.    urls.seekg(0, std::ios::beg);
  14.    long index=0;
  15.    while (index!=size)
  16.    {
  17.        index++;
  18.        c = urls.get();
  19.        if (c==';') {
  20.        manager = new QNetworkAccessManager(this);
  21.        QUrl url = QUrl(urlname.c_str());
  22.        connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onManagerFinished(QNetworkReply*)));
  23.        manager->get(QNetworkRequest(url));
  24.        urlname="";
  25.        } else {
  26.            urlname = urlname + c;
  27.        }
  28.    }
  29.    urls.close();
  30.  
  31. }
  32.  
  33. void downloader::onManagerFinished(QNetworkReply *r)
  34. {
  35.    std::stringstream stream;
  36.    stream << i;
  37.    std::string filename0;
  38.    filename0 = "fuck/temp";
  39.    filename0 += stream.str()+".html";
  40.    i++;
  41.    QString filename=filename0.c_str();
  42.    QFile file( filename );
  43.    if ( file.open(QIODevice::ReadWrite) )
  44.    {
  45.        QTextStream stream( &file );
  46.        stream << r->readAll() << endl;
  47.    }
  48.    file.close();
  49.    delete r;
  50. }
  51.  

« Última modificación: 16 Julio 2013, 15:40 pm por Stakewinner00 » En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Duda Networkaccesmanager de Qt.
« Respuesta #4 en: 16 Julio 2013, 01:31 am »

Será culpa del espacio o el salto de lineas entre urls? Prueba simplemente a imprimir en pantalla las urls que le indiques sin realizar ninguna operación con ellas. Si solo imprime la primera la culpa es de la manera de almacenar las urls, ya sea la forma de tomarlas o las variables que se usen.

Es una comprobación muy simple pero así podemos centrarnos en el culpable sin tener que mirar todo el código.
En línea

I like to test things.
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda Networkaccesmanager de Qt.
« Respuesta #5 en: 16 Julio 2013, 09:09 am »

Ya lo probé y devuelve la primera URL la carpeta destino luego imprime la segunda URL y ya no devuelve nada más.

Gracias de todos modos
En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: Duda Networkaccesmanager de Qt.
« Respuesta #6 en: 16 Julio 2013, 13:53 pm »

No me entero del código pero ¿no será que al acabar la conexión con la primera url se cierra y hay que volver a abrirla?
Comprueba a ver..
En línea

I like to test things.
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Duda Networkaccesmanager de Qt.
« Respuesta #7 en: 16 Julio 2013, 15:38 pm »

Comprueba las URLs, el modo de apertura del archivo de URLs, procura liberar la memoria del manager, y fíjate que en las primeras iteraciones del bucle obtendrás una URL válida si está en el archivo como tú quieres, pero luego le sigues sumando caracteres al string urlname sin haberlo limpiado antes, y lógicamente no te funciona.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda Networkaccesmanager de Qt.
« Respuesta #8 en: 16 Julio 2013, 16:11 pm »

no funciona con nada. El error esta en el manager. Cuando carga la primera url la carga bien pero la segunda no escribe nada probé a poner delete manager; y manager->disconnect; pero no ha funcionado. 
En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda Networkaccesmanager de Qt.
« Respuesta #9 en: 17 Julio 2013, 10:24 am »

Ya lo arregle. Gracias a 0xDanni vi que el error era al pasarlo a QUrl y vi que cuando mandaba la petición acababa con un %0D así que hice un  for (int i=0;i<urlname.size()-1;i++) y ya no dio error.

Gracias a todos por vuestra ayuda.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,814 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 5,840 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
DUda c++
Programación C/C++
Stakewinner00 4 2,575 Último mensaje 18 Septiembre 2012, 15:09 pm
por Stakewinner00
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines