NSURLConnection错误。适用于iOS而非OSX

时间:2014-02-28 19:54:22

标签: json macos

我有一个连接问题,我不确定如何解决。我已经梳理了错误和NSURLConnection的文档。这是我在同一个应用程序的iOS版本中使用的代码。它在那里工作正常,但当我把它带到应用程序的OS X版本时,它不起作用。这是代码:

NSURL* url = [NSURL URLWithString:@"url"];
NSString* data = [NSString stringWithFormat:@"command=retrieve&number=%d", number];
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[data dataUsingEncoding:NSUTF8StringEncoding]];

NSLog(@"Starting Command");
NSOperationQueue* queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    NSLog([NSString stringWithFormat:@"%@",connectionError]);
    if ([data length] > 0 && connectionError == nil) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [self parseResponseFromCommandRequest:data];
        });
    }
}];
NSLog(@"Ending Command");

NSURLConnection发生错误。输出是:

  

错误域= NSPOSIXErrorDomain代码= 1“操作无法完成。操作不被允许”UserInfo = 0x610000279dc0 {NSErrorFailingURLStringKey = url,NSErrorFailingURLKey = url}

url 实际上是一个正在运行的网址,但我在这里更换了它。就像我说的,它在iOS上运行良好,但在OS X上运行不正常。是否有一个我可能缺少的库导致了这个?还有其他想法吗?

1 个答案:

答案 0 :(得分:4)

这可能只是设置权限以允许访问。它从错误中看出它失败了,因为它是不允许的,这表明应用程序沙箱正在执行它的工作。对于NSURL,您通常会使用bookmarks.app-scopebookmarks.document-scope

请参阅:Enabling Security-Scoped Bookmark and URL Access

根据您的应用使用NSURL的方式,网络权利可能值得关注:

com.apple.security.network.server = Allow Incoming Connections
com.apple.security.network.client = Allow Outgoing Connections