Getting SHOUTcast metadata on the Mac

独自空忆成欢 提交于 2019-12-08 08:33:03

问题


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?


回答1:


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




回答2:


Fernando Valente's solution for this problem

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




回答3:


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.



来源:https://stackoverflow.com/questions/2660695/getting-shoutcast-metadata-on-the-mac

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!