我使用此处张贴的代码:
connection release method in connectionDidFinishLoading, causes error
现在首先执行返回didFail日志。 第二次执行;返回旧的响应数据。 尽管我的(localhost)服务器完全脱机。 和cachePolicy是NSURLCacheStorageNotAllowed(检查我上面发布的链接上的代码)
NSMutableURLRequest *request=
[NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:3.0f];
响应数据似乎缓存在某处并且仍然存在。
但是如果我使用NSURLRequestReloadIgnoringLocalAndRemoteCacheData //被评为-not implemented -
不返回旧缓存。
但如果是这样之间有什么区别:
NSURLRequestReloadIgnoringLocalAndRemoteCacheData
和
NSURLCacheStorageNotAllowed
我该怎么办?
答案 0 :(得分:2)
NSURLCacheStorageNotAllowed
是指NSCachedURLResponse
,是enum NSURLCacheStoragePolicy
的值。由于NSMutableURLRequest
的缓存策略也是枚举(NSURLRequestCachePolicy
),因此您只需将错误的int传递给创建NSMutableURLRequest
的静态方法。在这种情况下,NSURLCacheStorageNotAllowed
只是2,等于NSURLRequestReturnCacheDataElseLoad
- 这就是您获取旧数据的原因。
答案 1 :(得分:0)
试试这个
NSString * Post = [[NSString alloc] initWithFormat:@“Post Parameters”]; NSURL * Url = [NSURL URLWithString:@“Url”];
NSData *PostData = [Post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [PostData length]];
NSMutableURLRequest *Request = [[NSMutableURLRequest alloc] init];
[Request setURL:Url];
[Request setHTTPMethod:@"POST"];
[Request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[Request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[Request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[Request setHTTPBody:PostData];
NSError *error;
NSURLResponse *response;
NSData *Result = [NSURLConnection sendSynchronousRequest:Request returningResponse:&response error:&error];
if (!Result)
{
NSLog(@"Error");
}
else
{
//Parse the result
}