2017-02-08 164 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