2016-01-24 50 views
0

我有幾個系列的圖像存儲在Web服務器上的文件夾。文件夾層次結構看起來是這樣的......XCode NSMutableURLRequest沒有打到Web服務器

WebServer’s Web Folder 
    _2016_4671579 
     Final 
      t1.jpg 
      t2.jpg 
      i1.jpg 
      i2.jpg 
     Recall 
      t1.jpg 
      t2.jpg 
      i1.jpg 
      i2.jpg 
     Initial 
      t1.jpg 
      t2.jpg 
      i1.jpg 
      i2.jpg 

用戶選擇的系列,最初的,回想一下,或者在iPad上列表和一系列最終從服務器檢索和顯示的一個。我正在使用下面的代碼來檢索圖像。在這個例子中,我檢索是有T開始JPG格式...

for (int i = 0; i < imageCount; i++) { 
    fileName = [NSString stringWithFormat:@"t%i.jpg", i+1]; 
    imagePath = [NSString stringWithFormat:@"_%@/%@/%@", [opHelper ID], [seriesArray objectAtIndex:thumbsSeriesIndex], fileName]; 
    urlString = [[NSString stringWithFormat:@"http://%@/%@", [opHelper hostIP], imagePath] stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
    url = [NSURL URLWithString:urlString]; 
    imageURL = [NSMutableURLRequest requestWithURL:url]; 
    NSURLResponse *response; 
    NSError *error; 
    imageData = [NSURLConnection sendSynchronousRequest:imageURL returningResponse:&response error:&error]; 
     //consume the imageData 
} 

這個工程除了在一段時間後,我回去空白影像的系列產品之一。在我的例子中,我會用Initial和Recall來獲得很好的圖像,但Final最後回來的是空白。一個500kb的文件被請求,imageData獲得800字節。我可以看到每個圖像請求的服務器命中數增加。如果一個系列失敗,服務器根本沒有被擊中。即。如果在上面的示例文件層次結構中選擇「重新調用」,則服務器計數將與初始值相同增加4,但如果選擇「最終」,則服務器計數不會增加。

這裏是正在發送的實際NSURLs ...

url NSURL * @"http://192.168.1.100/_2016_4671579/Final/t1.jpg" 0x80a7f640 
url NSURL * @"http://192.168.1.100/_2016_4671579/Recall%201/t1.jpg" 0x804fbcf0 
url NSURL * @"http://192.168.1.100/_2016_4671579/Initial/t1.jpg" 0x8088da30 

在這種情況下,最後的網址上的作用並沒有擊中服務器,但我沒有看到任何的網址,跳出我這可能是可疑的。有人在我的代碼中看到任何可能導致此問題的東西嗎?我知道這不是一個文件問題,因爲即使我重命名其中一個工作文件夾,以便找不到請求的文件,服務器也會被擊中,並且iPad無任何錯誤地收到空白圖像。

感謝您的任何幫助。

約翰

回答

0

好的。這是一個緩存問題。我固定它通過修改緩存策略...

imageURL = [NSMutableURLRequest requestWithURL:url]; 
imageURL.cachePolicy = NSURLRequestReloadIgnoringCacheData; 

約翰