FinderSync 扩展 HTTP 请求失败

Posted

技术标签:

【中文标题】FinderSync 扩展 HTTP 请求失败【英文标题】:FinderSync Extension HTTP request to failing 【发布时间】:2017-02-08 10:00:57 【问题描述】:

目前我正在使用 Swift 语言为我的应用程序编写 FinderSync 扩展。我的扩展需要对在端口号 40322 的本地主机上运行的服务器进行 REST 调用。根据响应,我将创建上下文菜单项。出于同样的原因,我在 "FinderSync.swift" 中编写了以下代码 文件为

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: true)"

后,相同的代码正在操场上运行

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

【问题讨论】:

我在沙盒时连接到非标准 http 端口上的本地主机时遇到了同样的问题,无论沙盒权利(网络客户端、服务器等)如何。对我来说,这似乎是 Sierra 10.12.4 中与应用程序传输安全相关的一个错误。如果您找到了解决方案,将很高兴听到。 【参考方案1】:

您是否将扩展程序的功能选项卡设置为允许网络连接?

您的应用扩展程序使用的 .entitlements 文件与主应用程序不同。确保您还添加了扩展程序需要的任何功能。

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

【讨论】:

以上是关于FinderSync 扩展 HTTP 请求失败的主要内容,如果未能解决你的问题,请参考以下文章

FinderSync 扩展运行时错误:无法打开该文件,因为您无权查看它

Finder Sync 扩展:无法通过 UNIX 域套接字进行通信

单击菜单项时没有回调

iOS 共享扩展中的 API 请求立即失败

如何修复wordpress中丢失的传输错误?

php上传zipxml文件失败