iOS Stream Audio с сервера с аутентификацией на основе файлов cookie

Я пытаюсь передать аудиофайл с сервера, защищенного аутентификацией на основе сеанса, и заметил, что и MPMoviePlayerController, и AVPlayerItem/AVPlayer не используют файлы cookie, установленные в NSHTTPCookieStorage. Если я сделаю тот же запрос URL-адреса, используя NSURLConnection, я получу 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

Запрос, сделанный с помощью 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 при запросе удаленного ресурса?


person Andy R    schedule 03.11.2011    source источник


Ответы (2)


AFAIK не может обеспечить использование файлов cookie (или любых других дополнительных HTTP-параметров) при использовании MPMoviePlayerController в удаленных потоках/файлах.

Может быть, GET-параметр был бы возможным обходным путем для вашей задачи?

person Till    schedule 04.11.2011
comment
Это в основном то, что я тоже нашел. В итоге я развил AudioStreamer Мэтта Галлахера и модифицировал его для поддержки пользовательских заголовков HTTP: github.com/arifken/AudioStreamer - person Andy R; 13.02.2012

Вы можете перехватить запрос от MPMoviePlayerController, используя класс, производный от NSURLProtocol, и по пути внедрить файлы cookie. Вот код: https://stackoverflow.com/a/23261001/3547099

person jacklehamster    schedule 24.04.2014