Xcode 7 / iOS 9中的Api调用错误(如何在plist中设置应用程序传输安全性)

5
我正在使用Xcode 7 beta版本。 现在,我正在使用一个API。如果我在Xcode 6.3中使用该API,则可以正常工作,但是当我在Xcode 7中使用相同的API时,会出现错误消息“无法解析”。 这里是我使用的API 请帮忙解决。谢谢!

那不是一个API,那是XML数据。 - Droppy
是的,它是XML数据,但在Xcode 7中响应没有得到,显示为nil。 - Manish Gumbal
你认为展示你的代码可能有助于解决问题,还是希望我们猜测你如何实现你的解决方案? - Droppy
2个回答

9
在iOS9中,苹果公司增加了一项被称为“应用传输安全”(ATS)的新功能。
ATS在网络调用过程中强制执行最佳实践,包括使用HTTPS。
苹果发布的预发文档:
ATS可以防止意外泄漏,提供安全的默认行为,并且容易采用。无论您是创建新应用程序还是更新现有应用程序,都应尽快采用ATS。
如果您正在开发新应用程序,则应专门使用HTTPS。如果您有现有应用程序,则应尽可能多地使用HTTPS,并为迁移其余部分的应用程序制定计划。
请在您的info.plist中添加以下关键字并查看结果。
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

即使您可以添加特定的异常,
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>testdomain.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <false/>
            <key>NSExceptionAllowInsecureHTTPSLoads</key>
            <false/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSThirdPartyExceptionAllowInsecureHTTPSLoads</key>
            <false/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <true/>
            <key>NSThirdPartyExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
            <key>NSRequiresCertificateTransparency</key>
            <false/>
        </dict>

        ...

    </dict>
</dict>

4
您可以按照以下简单步骤操作。

在您的info.plist中添加以下内容:enter image description here

NSAppTransportSecurity
NSAllowsArbitraryLoads
这样可以帮助您。


运行正常 NSAppTransportSecurity NSAllowsArbitraryLoads这将非常有帮助... - Rahul K Rajan
1
`NSAppTransportSecurity NSAllowsArbitraryLoads` - Vinu David Jose

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接