使用 Swift 以编程方式测试 URL

问题描述 投票:0回答:1

我正在使用 SwiftUI 开发一个 iOS 应用程序,其数据记录包括大量的 URL 地址。 我正在开发一个 MacOS 实用应用程序,我将用它来编辑和维护 iOS 应用程序中的数据。

因为数据中会包含很多 URL Web 链接,所以我尝试在我的 MacOS 实用程序应用程序中创建一个自动审核功能,我可以定期使用它来浏览数据记录并测试每个链接查找需要更新或删除的损坏/过时的链接。

但是,每次我尝试测试链接(即使是有效的链接)时,我总是会收到错误。

我已将以下内容添加到 macOS 实用程序应用程序的 pList 中。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

这是一个简化的函数,用于测试单个有效 URL 的有效性(对于此测试,我使用了 google URL):


func testGetUrlRequest()
    {
        let url = URL(string: "https://www.google.com/")!
        
        let task = URLSession.shared.dataTask(with: url) {(data, response, error) in
            guard let data = data else { return }
            print("The response is : ",String(data: data, encoding: .utf8)!)
            //print(NSString(data: data, encoding: String.Encoding.utf8.rawValue) as Any)
        }
        task.resume()
    }

当我运行此代码时,以下响应将打印到控制台:

请求失败并出现错误:找不到具有指定主机名的服务器。 错误详细信息:错误域=NSURLErrorDomain代码=-1003“找不到具有指定主机名的服务器。” UserInfo={_kCFStreamErrorCodeKey=-72000、NSUnderlyingError=0x6000017d1fb0 {Error Domain=kCFErrorDomainCFNetwork Code=-1003 "(null)" UserInfo={_kCFStreamErrorDomainKey=10、_kCFStreamErrorCodeKey=-72000、_NSURLErrorNWResolutionReportKey=已解析 0 个端点1ms 使用未知的查询,_NSURLErrorNWPathKey=satisfied(路径满足),接口:en0[802.11]、ipv4、ipv6、dns、使用 wifi}}、_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <4DD76B44-1F80-45BD-A2F6-AF9EFAF9B921>.<1>、_NSURLErrorRelatedURLSessionTaskErrorKey=( “本地数据任务<4DD76B44-1F80-45BD-A2F6-AF9EFAF9B921>。<1>” ), NSLocalizedDescription=找不到指定主机名的服务器。, NSErrorFailingURLStringKey=https://www.google.com/, NSErrorFailingURLKey=https://www.google.com/, _kCFStreamErrorDomainKey=10}

给出“无法找到具有指定主机名的服务器。”明显可行的 URL 出现错误,肯定还有另一个问题。

由于这是我自己的开发实用程序应用程序,因此我只是通过 Xcode 在我的 MacBook 上运行它。 这可能是问题的一部分吗?

还有其他想法吗?

swift macos url automated-tests
1个回答
0
投票

但是您未能向我们报告错误消息中的部分(并因此给出答案):

此进程的沙箱配置文件正在阻止与网络内容过滤器的通信。请修改沙盒配置文件以允许访问 com.apple.nesessionmanager.content-filter Mach 服务

换句话说:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.