NSMutableURLRequest返回旧值,即使cachePolicy是NSURLCacheStorageNotAllowed

时间:2013-09-02 07:56:22

标签: objective-c nsmutableurlrequest nsurlrequestcachepolicy

我使用此处张贴的代码:
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

我该怎么办?

2 个答案:

答案 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
    }