HTTPUrlConnection и обработка ответов типа контента application/octet-stream

Я пишу мультимедийный проигрыватель Android, который использует класс Java HTTPUrlConnection для доступа к URL-адресам. Недавно мне прислали отчет об ошибке, связанный со следующим URL:

"http://listen.theradio.cc"

Этот URL-адрес перенаправляет на «http://listen.theradio.cc/theradiocc.pls», который возвращает список воспроизведения в формате PLS. Проблема, с которой я сталкиваюсь, заключается в том, что мое приложение обычно определяет, что делать с URL-адресом, лучше всего в поле заголовка типа контента. URL-адрес, который я разместил выше, возвращает тип содержимого «application/octet-stream», который может быть любым. Поэтому вместо того, чтобы пытаться проанализировать возвращенный список воспроизведения, мое приложение пытается воспроизвести URL-адрес (что, очевидно, терпит неудачу). Есть ли другой способ эффективно определить, какой тип контента возвращает URL-адрес в такой ситуации? Должен ли я попытаться получить InputStream и проверить первые несколько строк возвращаемого содержимого?


person William Seemann    schedule 26.04.2012    source источник


Ответы (1)


Все может быть application/octet-stream, поэтому это вводит в заблуждение, поскольку сервер не возвращает ожидаемый тип контента для списка воспроизведения.

Лучше исправить на стороне сервера.

Кроме того, при выполнении запроса HEAD должна быть возможность узнать информацию для URL-адреса.

Выполнение запроса curl к http://listen.theradio.cc/theradiocc.pls возвращает следующий результат.

curl -i http://listen.theradio.cc/theradiocc.pls

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 26 Apr 2012 03:44:42 GMT
Content-Type: application/octet-stream
Content-Length: 111
Last-Modified: Tue, 15 Nov 2011 23:57:04 GMT
Connection: keep-alive
Accept-Ranges: bytes

[playlist]
NumberOfEntries=1
File1=http://theradio.cc:8000/trcc-stream
Title1=TheRadio.CC
Length1=-1
Version=2

Так что вещи нужно исправлять и правильно исправлять!

person Kowser    schedule 26.04.2012