iOS 使用基于 Cookie 的身份验证从服务器流式传输音频

标签 ios cookies stream mpmovieplayercontroller avplayer

我正在尝试从受基于 session 的身份验证保护的服务器流式传输音频文件,我注意到 MPMoviePlayerController 和 AVPlayerItem/AVPlayer 似乎都没有使用 NSHTTPCookieStorage 中设置的 cookie。如果我使用 NSURLConnection 发出相同的 URL 请求,我会得到 200,并且能够访问音频文件。当我通过代理监视请求时,MPMoviePlayerController 似乎没有在请求 header 中设置 cookie,而 NSURLConnection 确实如此:

使用 MPMoviePlayerController 的 initWithContentURL 发出的请求:

GET /path/on/server/test1.m4a HTTP/1.1
Host: server.example.net
User-Agent: AppleCoreMedia/1.0.0.9A334 (iPhone Simulator; U; CPU OS 5_0 like Mac OS X; en_us)
Accept: */*
Range: bytes=0-1
Accept-Encoding: identity
X-Playback-Session-Id: E8F093F4-C906-46A8-94FE-30BBCFDAB3F6
Connection: keep-alive

使用 NSURLConnection 发出的请求:

GET /path/on/server/test1.m4a HTTP/1.1
Host: server.example.net
User-Agent: otest (unknown version) CFNetwork/548.0.3 Darwin/11.1.0
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: somekey=abc123def456
Connection: keep-alive

有谁知道如何让 MPMoviePlayerController 或 AVPlayerItem 在请求远程资源时使用 NSHTTPCookie?

最佳答案

您可以使用从 NSURLProtocol 派生的类拦截来自 MPMoviePlayerController 的请求,并沿途注入(inject) cookie。这是代码:https://stackoverflow.com/a/23261001/3547099

关于iOS 使用基于 Cookie 的身份验证从服务器流式传输音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998963/

相关文章:

ios - UIImage View 没有自动布局的整数高度,绘制的线条变得模糊

ios - 缺少 64 位支持。应用商店提交错误

c# - 如何读取本地cookie

java - 为什么我似乎无法从 URL 流读取整个压缩文件?

围绕 2 个字符串流 ("dialogue"模仿的 C++ 包装器)

ios - 如何在我的应用程序中只打印一次警报 View ?

ios - 如何在 iOS 模拟器中获取虚假联系人?

javascript - 使用 javascript 将值插入数组

angularjs - $cookies.remove 不适用于 http ://localhost/path/#!/

firebase - 如何在不重置状态的情况下更新 StreamBuilder 中的 Flutter Cards?