*

pipagerardo

  • *
  • contador 1
  • mas karma +0/-0
    • Ver Perfil
    • PipaGerardo
Redirecionamiento 302 Moved Temporarily
« en: Marzo 14, 2016, 05:40:09 am »
Hola a todos, quiero hacer un pequeño programa en C++ y SDL2 que calcula las probabilidades de la EuroMillones, para ello debe bajar de una web un archivo de texto donde están todos los resultados usando la librería SDL2_net.
Esta el la URI "https://sites.google.com/site/msxplaymusic/home/euromillones.txt"

Me conecto con el servidor "sites.google.com" en el puerto 80:

IPaddress ip;
if( SDLNet_ResolveHost( &ip, "sites.google.com", 80 ) < 0 ) {
    SDL_LOG( "SDLNet_ResolveHost %s", SDLNet_GetError() );
    return -1;
}

Creo un Socket:

TCPsocket sock = SDLNet_TCP_Open( &ip );
if( sock == NULL ) {
    SDL_LOG( "SDLNet_TCP_Open: %s", SDLNet_GetError() );
}

Y le mando un GET solicitando el archivo:

PGL::Cadena Cadena; // Esta clase es como String pero hecha por mi.
Cadena << "GET /site/msxplaymusic/home/euromillones.txt HTTP/1.1\r\n";
Cadena << "host: sites.google.com\r\n";
Cadena << "Accept: */*\r\n";
Cadena << "Connection: close\r\n";
Cadena << "\r\n";

int enviado, recibido;
enviado = SDLNet_TCP_Send( sock, (const void *)Cadena.dameCadena(), Cadena.dameLongitud() );
if( enviado < (int)Cadena.dameLongitud() ) {
   SDL_LOG( "Error SDLNet_TCP_Send" );
    return -1;
}

Ahora me pongo a la escucha y guardo todo en un archivo:

char* buffer = new char[1024];
bool descargando = true;
PGL::Archivo Archivo; // Es una clase hecha por mí para el manejo de archivos.
Archivo.inicia( "descarga.txt", "wb" );
while( descargando ) {
    recibido = SDLNet_TCP_Recv( sock, buffer, 1024 );
    if( recibido > 0 ) Archivo.escribe( buffer, (size_t)recibido );
    else descargando = false;
}
delete[] buffer;
Archivo.quita();
SDLNet_TCP_Close( sock );

Y me devuelve este mensaje:

HTTP/1.1 302 Moved Temporarily
Content-Type: text/html; charset=UTF-8
Location: https://sites.google.com/site/msxplaymusic/home/euromillones.txt
Date: Sun, 13 Mar 2016 20:46:45 GMT
Expires: Sun, 13 Mar 2016 20:46:45 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Accept-Ranges: none
Vary: Accept-Encoding
Transfer-Encoding: chunked

<HTML>
<HEAD>
<TITLE>Moved Temporarily</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Moved Temporarily</H1>
The document has moved <A HREF="https://sites.google.com/site/msxplaymusic/home/euromillones.txt">here</A>.
</BODY>
</HTML>

Conclusiones:

El servidor me dice que se ha movido temporalmente el archivo a la misma ubicación y nombre ??? y encima las fechas que da no las entiendo expiran al momento.

¿Que tengo que hacer? He probado a mandar otro GET con la nueva dirección que es la misma pero no funciona. Usando el navegador lo descarga sin problemas.

Colocando el archivo en otro servidor como por ejemplo el de "webs.ono.com" funciona perfectamente, pero quería colocarlo en "sites.google.com".

Si alguien me puede ayudar estaría muy agradecido.
« Última modificación: Marzo 14, 2016, 05:49:07 am por pipagerardo »
Por favor, apoya esta pregunta en redes sociales


Conecta con tu cuenta para responder