2014-03-26 17 views
0

我有一个.gif图像,只有在使用Wifi时才可以访问。在像mydomain.mysite.com/myimage.gif这样的特定域上,图像无法访问。无法访问的图像返回响应

但在我的生产环境中的图像一些如何变得方便和返回如下回应:

<NSHTTPURLResponse: 0x156c5200> { URL: } { status code: 200, headers { 
    "Accept-Ranges" = bytes; 
    "Cache-Control" = "max-age=86400"; 
    "Content-Length" = 554; 
    "Content-Type" = "image/gif"; 
    Date = "Wed, 26 Mar 2014 14:47:53 GMT"; 
    Etag = "\"030329e4e9c91:11c4\""; 
    "Last-Modified" = "Tue, 09 Jun 2009 13:17:20 GMT"; 
    Server = "Microsoft-IIS/6.0"; 
    "X-Powered-By" = "ASP.NET"; 
} } 

我的目标C代码如下:

NSHTTPURLResponse *response; 
    NSError *error = nil; 

    NSURL *url = [NSURL URLWithString:currentEnvironment]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    [NSURLConnection sendSynchronousRequest:request returningResponse:&response 
             error:&error]; 



    if(response != nil) return YES; 

    return NO; 

SOLUTION:

我相信这是解决方案:cachePolicy已实施。

NSURL *url = [NSURL URLWithString:currentEnvironment]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; 

    [NSURLConnection sendSynchronousRequest:request returningResponse:&response 
             error:&error]; 
+0

图像是否可以从缓存中传出? – rckoenes

+0

这就是我想知道的!但我并不完全缓存图像。此外,它适用于其他领域,但不适用于生产。 –

+0

默认情况下,iOS将使用设置在http标头中的缓存策略,除非您告诉它不要使用不使用任何缓存策略。 – rckoenes

回答

1

生产服务器正在发送高速缓存响应的高速缓存控制标头。解决方法是指定NSURLRequest不缓存,其实现如下:

NSURL *url = [NSURL URLWithString:currentEnvironment]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; 

    [NSURLConnection sendSynchronousRequest:request returningResponse:&response 
             error:&error];