file:///path/to/local/file/data.json URL 能否与 AFHTTPRequestOperation 一起使用
Posted
技术标签:
【中文标题】file:///path/to/local/file/data.json URL 能否与 AFHTTPRequestOperation 一起使用【英文标题】:Can the file:///path/to/local/file/data.json URL be used with AFHTTPRequestOperation 【发布时间】:2015-01-21 04:55:49 【问题描述】:有没有办法使用 AFHTTPRequestOperation 来检索本地 JSON 测试数据文件的内容?以下代码 sn -p 的执行遵循失败代码块。我怀疑问题正在发生,因为我正在使用带有 file:/// 构造的 URL。这个假设正确吗?
/** Get JSON from the local file **/
// Create an URL object set to the JSON endpoint.
NSURL *url = [[NSURL alloc] initWithString:@"file:///Users/charlie/Desktop/Xcode%20Projects/Assets/MyProfile.json"];
// Create a URL Load Request using the NSURL.
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
// Create an AFHTTPRequestOperation to perform the Internet call.
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id jsonObject)
// If the request succeeds:
NSLog(@"JSON is: %@", jsonObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
// If the request fails:
NSLog(@"%%ViewController-E-DEBUG, JSON request failed.");
];
// Start the request operation.
[operation start];
【问题讨论】:
【参考方案1】:您不能将 AFNetworking 用于本地文件数据,因为 AFNetworking 用于网络任务,因为这不是网络任务,因此您可以选择该文件并使用 NSJsonSerialization 在本地解析该文件。 假设本地文件在您的项目目录中。
NSString *filePath = [[NSBundle mainBundle] pathForResource:jsonFileName ofType:@"json"];//jsonfilename is the name of your file
NSData *JSONData = [NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:nil];
NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableContainers error:nil];
【讨论】:
以上是关于file:///path/to/local/file/data.json URL 能否与 AFHTTPRequestOperation 一起使用的主要内容,如果未能解决你的问题,请参考以下文章