来自基于Cookie的Auth的服务器的iOS流音频

And*_*y R 6 cookies stream mpmovieplayercontroller ios avplayer

我正在尝试从受基于会话的身份验证保护的服务器流式传输音频文件,我注意到MPMoviePlayerController和AVPlayerItem/AVPlayer似乎都没有使用NSHTTPCookieStorage中设置的cookie.如果我使用NSURLConnection发出相同的URL请求,我会得到200并且能够访问音频文件.当我通过代理监视请求时,似乎MPMoviePlayerController没有在请求头中设置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
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

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

Til*_*ill 1

在远程流/文件上使用时,据我所知,无法强制执行 cookie(或任何其他附加 HTTP 参数)MPMoviePlayerController

也许 GET-Parameter 是您任务的一个可能的解决方法?

  • 这基本上也是我发现的。我最终分叉了 Matt Gallagher 的 AudioStreamer 并修改它以支持自定义 HTTP 标头:https://github.com/arifken/AudioStreamer (2认同)