2017-02-08 112 views
1

目前我正在为我的应用程序使用Swift语言编写FinderSync扩展。我的扩展需要对端口号为40322的本地主机上运行的服务器执行REST调用。基于响应,我将创建上下文菜单项目。对于同样的原因,我写了下面的代码“FinderSync.swift” 文件FinderSync扩展HTTP请求失败

let config = URLSessionConfiguration.default 
// Session Configuration 
let session = URLSession(configuration: config) 
// Load configuration into Session 
let request_url = URL(string: "http://127.0.0.1:40322/api/get_rclick_settings_and_check_target")! 

let task = session.dataTask(with: request_url, completionHandler: { 
    (data, response, error) in 
    if error != nil { 
     print("TAKS ERROR: \(error!.localizedDescription)") 
    } 
    else { 
     do { 
      if let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any] 
      { 
       NSLog("TASK RESPONSE: \(json)") 
      } 
     } catch { 
      NSLog("error in JSONSerialization")     
     } 
    } 
}) 
task.resume() 

但给错误的 代码 “nw_socket_connect的ConnectX失败:[1]不允许的操作”

但相同的代码输入XCPlayground并添加行运行后操场“XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely:真)”

我的问题是我们是否需要添加“info.plist”应用程序或FinderSync扩展中的任何元素,以允许扩展程序执行REST调用或者是否有任何其他方法来解决此问题?

+0

我遇到同样的问题,连接沙盒当非标准的HTTP端口为localhost,无论沙盘权利(网络客户端,服务器等)的时候。对我来说,这似乎是Sierra 10.12.4中与应用程序传输安全有关的一个错误。很高兴听到您是否找到了解决方案。 –

回答

1

您是否设置了分机的功能选项卡以允许网络连接?

您的应用程序扩展程序使用与主应用程序不同的.entitlements文件。确保你额外增加了扩展需要的功能。

<key>com.apple.security.network.client</key> 
<true/> 

enter image description here