MKNetworkOperation failWithError: неподдерживаемый URL

Я только начал использовать MKNetworkKit для своих сетевых операций, и я попытался просто получить некоторые данные с сервера, используя эти MKNetworkOperation, но это сделало меня странной ошибкой... действительно странной, на которой: Неподдерживаемый URL, я много искал по этой проблеме, но нет надежды, я никогда не пробовал эту ошибку раньше, и у меня было старое приложение, которое использует ту же библиотеку с тем же примером без ошибок, посмотрите на это для расследования ошибок:

   NSString *path =[NSString stringWithFormat:@"blabs.json"];
MKNetworkOperation *op =[[MKNetworkOperation alloc]initWithURLString:path params:nil httpMethod:@"GET"];
NSLog(@"%@",[op url]);
[op addCompletionHandler:^(MKNetworkOperation *CompletedOperation){
    completionHandler([CompletedOperation responseJSON]);
} errorHandler:^(MKNetworkOperation *CompleteOperation, NSError *err){
    errHandler(err,[CompleteOperation responseString]);
}];
[self enqueueOperation:op forceReload:YES];

3 ответа

blabs.json не является действительным URL. Вот почему ошибка

Вам также нужно экранировать не-ASCII символы в вашем URL:

NSString *path =[NSString stringWithFormat:@"blabs.json"];
NSString* pathEncoded = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
MKNetworkOperation *op =[[MKNetworkOperation alloc]initWithURLString:pathEncoded params:nil httpMethod:@"GET"];
NSLog(@"%@",[op url]);
[op addCompletionHandler:^(MKNetworkOperation *CompletedOperation){
    completionHandler([CompletedOperation responseJSON]);
} errorHandler:^(MKNetworkOperation *CompleteOperation, NSError *err){
    errHandler(err,[CompleteOperation responseString]);
}];
[self enqueueOperation:op forceReload:YES];

Если этот файл находится внутри вашего комплекта, нет необходимости использовать MKnetworkkit. Mknetwrokkit предназначен для запроса с сервера, вместо этого вы можете напрямую получить содержимое файла json, который находится в вашем комплекте. Для получения содержимого файла вы можете написать код в виде

NSData *data = [NSData dataWithContentsOfFile:[NSBundle mainBundle]pathForResourece:@"blabs.json"];

Эти данные вы можете напрямую использовать и анализировать.

Другие вопросы по тегам