MKNetworkOperation failedWithError:不支持的URL

时间:2013-05-16 13:17:46

标签: ios url network-programming mknetworkkit mknetworkengine

我刚开始使用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 个答案:

答案 0 :(得分:0)

blabs.json不是有效的网址。这就是错误

的原因

答案 1 :(得分:0)

您还需要转义URL中的非ASCII字符:

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];

答案 2 :(得分:0)

如果该文件在您的包中,则无需使用MKnetworkkit。 Mknetwrokkit用于从服务器请求而不是您可以直接获取捆绑包中的json文件的内容。要获取文件内容,您可以将代码编写为

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

您可以直接使用此数据并对其进行解析。