NSURLConnection错误。在iOS上无法在OSX上使用

ste*_*ven 2 macos json

我有一个不确定的连接问题,该如何解决。我已经仔细阅读了有关错误和的文档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");
Run Code Online (Sandbox Code Playgroud)

错误发生在中NSURLConnection。输出为:

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

url实际上是一个正常工作的url,但是我在这里替换了它。就像我说的那样,它在iOS上运行良好,但在OS X上却无法运行。是否有可能导致我丢失的库?还有其他想法吗?

l'L*_*L'l 5

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

请参阅:启用安全范围内的书签和URL访问

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

com.apple.security.network.server = Allow Incoming Connections
com.apple.security.network.client = Allow Outgoing Connections
Run Code Online (Sandbox Code Playgroud)