无法使用NSURLConnection sendSynchronousRequest从URL获取图像

时间:2012-05-03 19:28:56

标签: image url proxy nsurlconnection

我有一个特殊的URL,可以在浏览器中返回图像。我想把这个特殊的图像放到UIImage对象中。但是,在我下面的代码示例中,似乎返回的数据不是图像。

浏览器似乎知道图像,我怎样才能看到图像?

是的,我需要通过proxify代理服务器获取此图片以解决我们遇到的问题。

以下是示例代码。

-(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;
}

1 个答案:

答案 0 :(得分:0)

我发现了一些问题:

  1. 在尝试转换为UIImage之前,您应该测试firstError != nil。经过一段时间的测试就没用了。

  2. 我试图访问您发布的网址,我收到一条错误消息,说明只有登录的用户可以使用。在浏览器中,它可能适用于您,因为您可能已登录,但iphone是不,你从proxify获得HTML

  3. 要查看您获得的响应,请在创建图像之前将其转换为NSString并将其显示到控制台:

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