我有一个连接问题,我不确定如何解决。我已经梳理了错误和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上运行不正常。是否有一个我可能缺少的库导致了这个?还有其他想法吗?
答案 0 :(得分:4)
这可能只是设置权限以允许访问。它从错误中看出它失败了,因为它是不允许的,这表明应用程序沙箱正在执行它的工作。对于NSURL
,您通常会使用bookmarks.app-scope
或bookmarks.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