NSURLConnection 完成错误 - 代码 -1002

NSURLConnection finished with error - code -1002

朋友们,我有简单的音频播放器 (MPMoviePlayerController),可以播放音频流。在 iOS 11 我遇到了非常有趣的麻烦,一千次我出错并且我的流停止了:

NSURLConnection finished with error - code -1002

我粘贴了这段代码(这段代码是我在 stackowerflow 上看到的),但对我没有帮助:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
        <dict>
            <key>cast.mysite.com</key>
            <dict>
                <key>NSExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSIncludesSubdomains</key>
                <true/>
            </dict>
        </dict>
    </dict>

也许您知道最佳解决方案?

首先你必须使用安全服务器(具有有效证书的服务器)。 我不确定是否有必要,因为我从未尝试使用无效证书访问服务器。您可以尝试此代码(不确定它是否适合您)将此代码放入 Appdelegate.m

@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES;
}
@end

该错误应该与使用 HTTP 而不是 HTTPS 有关。应用程序传输安全失败 return 错误代码 -1022。

错误代码 -1002 表示无效 URL。也许您的 HTTP 直播播放列表文件包含结构上无效的 URL(例如缺少方案、http/https 以外的方案等)?

要进行额外调试,请设置此环境变量

CFNETWORK_DIAGNOSTICS=1

在您的 Xcode 项目中并重新 运行 应用程序。一旦您知道 URL 失败的原因,问题可能会变得更加明显。

如果不是,请提交错误。

如果您的 URL 包含空格,就会出现此问题。我用“%20”替换空格解决了,然后你就可以放心使用了。 Objective C 替换空格的代码如下。

your_url_variable_name = [your_url_variable_name stringByReplacingOccurrencesOfString:@" " withString:@"%20"];