Swift iOS 9 NSURLErrorDomain错误-1004

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

我在iOS 9和iOS 8上都使用了Swift 2和Alamofire。在iOS 8中,我对API的所有请求都可以正常工作。在iOS 9中,它们立即失败,并显示-1004 NSURLErrorDomain消息“无法连接到服务器”。我了解了Apple通过App Transport Security所做的更改,并且已经将该条目添加到我的Plist中以禁用它并允许不安全的连接。

我对这个错误的原因不知所措...任何帮助都将非常有用!

ios swift2 ios9 alamofire
1个回答
2
投票

在用了很多不同的键和值使它工作后,我终于想出了使它在iOS9.1中起作用的方法:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>mydomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSRequiresCertificateTransparency</key>
            <false/>
        </dict>
    </dict>
</dict>

我添加了最后一个NSRequiresCertificateTransparency并将其设置为false后,它起作用了,所以这可能是最重要的一个。


0
投票

有一个错误向您解释,该应用无法连接到主机,当主机名解析但主机已关闭或可能不接受某个端口上的连接时,可能会发生这种情况。

NSURLErrorCannotConnectToHost = -1004

有关更多信息,请参见以下链接https://developer.apple.com/documentation/foundation/1508628-url_loading_system_error_codes/nsurlerrorcannotconnecttohost?language=objc

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