XCode NSMutableURLRequest 没有访问网络服务器
XCode NSMutableURLRequest not hitting the web server
我有几个系列的图像存储在网络服务器上的文件夹中。文件夹层次结构看起来像这样……
WebServer’s Web Folder
_20160123161915_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
用户 select 从 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 个字节。我可以看到每个图像请求的服务器命中数增加。如果系列失败,则服务器根本不会受到攻击。 IE。如果在上面的示例文件层次结构中,我 select 召回服务器计数增加 4,与初始相同,但如果我 select 最终服务器计数不增加。
这里是实际发送的 NSURLs…
url NSURL * @"http://192.168.1.100/_20160123161915_4671579/Final/t1.jpg" 0x80a7f640
url NSURL * @"http://192.168.1.100/_20160123161915_4671579/Recall%201/t1.jpg" 0x804fbcf0
url NSURL * @"http://192.168.1.100/_20160123161915_4671579/Initial/t1.jpg" 0x8088da30
在这种情况下,Final 的 url 出现问题,没有访问服务器,但我没有看到任何可能在 URL 中跳出来的可疑内容。有没有人在我的代码中看到任何可能导致此问题的内容?我知道这不是文件问题,因为即使我重命名其中一个工作文件夹以致无法找到所请求的文件,服务器也会受到攻击并且 iPad 收到空白图像而不会出现任何错误。
感谢您的帮助。
约翰
好的。这是一个缓存问题。我通过修改缓存策略修复了它...
imageURL = [NSMutableURLRequest requestWithURL:url];
imageURL.cachePolicy = NSURLRequestReloadIgnoringCacheData;
约翰
我有几个系列的图像存储在网络服务器上的文件夹中。文件夹层次结构看起来像这样……
WebServer’s Web Folder
_20160123161915_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
用户 select 从 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 个字节。我可以看到每个图像请求的服务器命中数增加。如果系列失败,则服务器根本不会受到攻击。 IE。如果在上面的示例文件层次结构中,我 select 召回服务器计数增加 4,与初始相同,但如果我 select 最终服务器计数不增加。
这里是实际发送的 NSURLs…
url NSURL * @"http://192.168.1.100/_20160123161915_4671579/Final/t1.jpg" 0x80a7f640
url NSURL * @"http://192.168.1.100/_20160123161915_4671579/Recall%201/t1.jpg" 0x804fbcf0
url NSURL * @"http://192.168.1.100/_20160123161915_4671579/Initial/t1.jpg" 0x8088da30
在这种情况下,Final 的 url 出现问题,没有访问服务器,但我没有看到任何可能在 URL 中跳出来的可疑内容。有没有人在我的代码中看到任何可能导致此问题的内容?我知道这不是文件问题,因为即使我重命名其中一个工作文件夹以致无法找到所请求的文件,服务器也会受到攻击并且 iPad 收到空白图像而不会出现任何错误。
感谢您的帮助。
约翰
好的。这是一个缓存问题。我通过修改缓存策略修复了它...
imageURL = [NSMutableURLRequest requestWithURL:url];
imageURL.cachePolicy = NSURLRequestReloadIgnoringCacheData;
约翰