короткий ответ: да, если это теги ID3v2
какую версию тега ID3 вы пытаетесь прочитать?
Теги ID3v1 находятся в конце файла в последних 128 байтах. С Net :: HTTP, похоже, невозможно перейти к концу файла и прочитать только последние N байтов. Если вы попробуете это, используя headers = {"Range" => "bytes = 128-"}, всегда будет казаться, что загружается полный файл. resp.body.size => размер файла. Но это не большая потеря, потому что версия 1 ID3 на данный момент в значительной степени устарела из-за своих ограничений, таких как формат фиксированной длины, только текст ASCII, ...). iTunes использует ID3 версии 2.2.0.
Теги ID3v2 находятся в начале файла - для поддержки потоковой передачи - вы можете загрузить начальную часть файла MP3, содержащую заголовок ID3v2, по протоколу HTTP> = 1.1.
Раньше я отвечал примерно на тот же вопрос, который касался реализации Ruby.
Проверьте этот вопрос: Читать теги ID3 удаленного MP3-файла в Ruby / Rails?
Продолжение ... Код Ruby в другом вопросе, который я упомянул, является полностью работающим примером.
Вы можете установить заранее определенный размер байтов, которые вы хотите получить, который должен быть достаточно большим, чтобы вы предполагали, что он содержит полный ID3-тег, например 1000 байт
Затем вы открываете HTTP-соединение, используя вашу любимую HTTP-библиотеку для любого языка, который вы используете, но убедитесь, что версия HTTP-протокола> = 1.1, и вы читаете первые 1000 байт, используя параметр HTTP «Диапазон», который только загружает заданный диапазон байтов из файла, к которому вы пытаетесь получить доступ через HTTP.
Конкретная реализация на iOS зависит от того, какие библиотеки вы используете.
Вот пример запроса GET в Objective-C: Простая цель -c GET запрос
Все, что вам нужно сделать, это передать в запрос заголовок Range, который указывает диапазон.
См. API: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableURLRequest_Class/Reference/Reference.html
Также проверьте пример того, как нужно форматировать поле заголовка Range:
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
например это синтаксис заголовка Range:
Range: bytes=0-1000
Вам нужно будет установить этот заголовок с помощью метода экземпляра addValue: forHTTPHeaderField.
person
Tilo
schedule
11.04.2013