Search code examples
javahttpmedia-playerhttpurlconnection

HTTPUrlConnection and application/octet-stream content-type response handling


I'm writing an Android media player that uses Java's HTTPUrlConnection class to access URL's. I was recently sent a bug report related to the following URL:

"http://listen.theradio.cc"

This URL redirects to "http://listen.theradio.cc/theradiocc.pls" which returns a playlist in PLS format. The problem I'm facing is that my application usually determines what to do with a URL best on the content-type header field. The URL I posted above returns a content-type of "application/octet-stream", which can be anything. So instead of trying to parse the returned playlist my application tries to play the URL (which fails, obviously). Is there any other way to effectively determine what type of content a URL is returning in a situation like this? Should I attempt to obtain an InputStream and check the first few lines of returned content?


Solution

  • Anything can be application/octet-stream thus it is misleading as the server does not return the expected content type for play-list.

    Its better to fix in the server side.

    Additionally doing a HEAD request it should be possible to know the information for the URL.

    Making a curl request to http://listen.theradio.cc/theradiocc.pls returns following.

    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
    

    So things needs to be fixed and properly fixed!