No se puede obtener la imagen de la URL mediante NSURLConnection sendSynchronousRequest

Tengo una URL especial que devuelve una imagen en un navegador. Me gustaría poner esta imagen especial en un objeto UIImage. Sin embargo, en mi ejemplo de código a continuación, parece que los datos devueltos no son una imagen.

El navegador parece conocer la imagen, ¿cómo puedo acceder a la imagen?

Sí, necesito obtener esta imagen a través del servidor proxy Proxify para resolver un problema que tenemos.

Aquí está el código de ejemplo.

-(UIImage*)retrieveMap
{        
    NSString* proxifiedGoogleMapURL = @"http://proxify.com/p/011010A1000100/687474703a2f2f6d6170732e676f6f676c652e636f6d2f6d6170732f6170692f7374617469636d61703f63656e7465723d34312e3031343130312c2d3130342e393738333333267a6f6f6d3d362673697a653d35303678353036267363616c653d32266d6170747970653d726f61647326666f726d61743d706e672673656e736f723d66616c7365";  

    NSURLRequest * firstRequest = [NSURLRequest requestWithURL:[NSURL URLWithString: proxifiedGoogleMapURL]];
    NSURLResponse * firstResponse = nil; 
    NSError * firstError = nil;
    NSData* firstData = [NSURLConnection sendSynchronousRequest:firstRequest returningResponse:&firstResponse error:&firstError];

    UIImage* dataAsImage = [UIImage imageWithData:firstData];


    if(firstError != nil || dataAsImage == nil)
    {
        NSLog(@"Failed in retrieving the map");
    }
    else 
    {
        NSLog(@"Succeeded in retrieving the map");
    }

    return dataAsImage;
}

preguntado el 03 de mayo de 12 a las 20:05

1 Respuestas

He detectado algunos problemas:

  1. Deberías probar firstError != nil antes de intentar convertir a una UIImage. Probarlo después lo hace inútil.

  2. Intenté acceder a la URL que publicaste y recibí un error que dice que está disponible solo para los usuarios que iniciaron sesión. En el navegador podría funcionar para ti, ya que probablemente hayas iniciado sesión, pero el iPhone no lo está y obtienes ese HTML. de proxificar

  3. Para ver la respuesta que obtiene, antes de crear la imagen, conviértala a NSString y muéstrela en la consola:

NSLog(@"Response from server: %@", [[NSString alloc] initWithData:firstData encoding:NSUTF8StringEncoding]

contestado el 04 de mayo de 12 a las 16:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.