如何在Java中阅读icy协议?

我想从流式冰冷协议中读取数据。问题是我尝试过的所有库(dsj,MP3SPI)都使用HttpUrlConnection来执行此操作。但是我已经在Windows 7上尝试了它并且我收到了“无效的http响应”这是正常原因“HTTP 200 OK”与“ICY 200 OK”不同。我知道这可以通过套接字实现,但我是初学者,所以如果任何可以提供几行o代码,所以我可以得到一个想法,我将不胜感激。如果你有一些解决方案,请分享他们。谢谢,祝你有愉快的一天!

这是我尝试过的代码:

URLConnection connection = new URL("89.47.247.59:8020").openConnection(); InputStream in = connection.getInputStream(); System.out.println("getting lots of bytes"); in.close(); 

错误是:

 Exception in thread "main" java.io.IOException: Invalid Http response at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.jav‌​a:1328) at javaapplication1.JavaApplication1.main(JavaApplication1.java:46) Java Result: 1 

抱歉无法弄清楚如何格式化代码或添加换行符。

编辑:我在下面的评论中包含了代码。

试试这个:

 URL url=new URL("89.47.247.59:8020"); Socket socket=new Socket(url.getHost(), url.getPort()); OutputStream os=socket.getOutputStream(); String user_agent = "WinampMPEG/5.09"; String req="GET / HTTP/1.0\r\nuser-agent: "+user_agent+"\r\nIcy-MetaData: 1\r\nConnection: keep-alive\r\n\r\n"; os.write(req.getBytes()); is=socket.getInputStream(); 

这完全适合我!

MP3SPI应该可以在所有系统上正常工作。

如果要提取ICY元数据,请检查以下代码: https ://gist.github.com/1008126有一个IcyInputStream可以打开URL并返回一个可以附加到解码器的常规InputStream,它还会提取像Artist和跟踪标题。

我使用此处的信息编写了此代码。