开发者

Getting SHOUTcast metadata on the Mac

I'm creating an application in Objective-C and I need to get the metadata from a SHOUTcast stream. I tried this:

NSURL *URL = [NSURL URLWithString:@"http://202.4.100.2:8000/"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
    [request addValue:@"1" forHTTPHeaderField:@"icy-metadata"];
    [request开发者_运维百科 addValue:@"Winamp 5/3" forHTTPHeaderField:@"User-Agent"];
    [request addValue:@"audio/mpeg" forHTTPHeaderField:@"Content-Type"];
    [NSURLConnection connectionWithRequest:request delegate:self];

I would have to get the headers from this request in order to get the information, right? Unfortunately it keeps returning these headers:

Date = "17 Apr 2010 21:57:14 -0200";

"Max-Age" = 0;

What I'm doing wrong?


I found an answer to this question. Simply append a 7.html at the end of the URL and parse the file.

I.E. http://38.96.148.138:7534/7.html


Fernando Valente's solution for this problem

http://www.fvalente.org/blog/2012/03/15/shoutcast-metadata-the-easy-way/


It seems that shoutcast does not follow HTTP exchange standards and its response headers and body are not separated by two newlines. NSURLConnection/NSURLResponse are unable to parse out the headers; however, connection:didReceiveResponse: is still fired, just with an empty NSURLResponse. This becomes clear if we take a look at data coming in connection:didReceiveData:. The first chunk received will contain metadata headers.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜