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 一起使用的主要内容,如果未能解决你的问题,请参考以下文章