百度音乐接口的应用

这里实现能够实现输入歌曲名与歌手名,***找到该歌曲的播放地址,并通过超链接的形式打开或播放。以下是实现过程:

创新互联专业提供成都服务器托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买成都服务器托管服务,并享受7*24小时金牌售后服务。

(1)、首先是一个JSP,接收歌曲名与歌手名,并提交给Servlet处理。

 
 
 
  1. <%@ page contentType="text/html;charset=GBK" pageEncoding="GBK"%> 
  2.  
  3.  
  4.  
  5. 输入歌手和歌曲名找歌曲

     
  6.  
  7. 歌手名:
     
  8. 歌曲名:
     
  9.  
  10.  
  11.  
  12.  
  13.  

(2)、编写解析DOM的工具类,这个类有一个静态方法 String dom(File file),传递的参数是要解析的XML文件,返回值是百度音乐的地址。

 
 
 
  1. package cn.guet.hj.servlet;  
  2. import javax.xml.parsers.*;  
  3. import org.w3c.dom.*;  
  4. import java.io.*;  
  5. /**  
  6. *   解析百度音乐掌门的XML  
  7. **/  
  8. public class MusicDom{  
  9.     //解析DOM  
  10.     public static String dom(File file){  
  11.           
  12.         String address="";//歌曲的实际地址  
  13.         try{  
  14.             //建立工厂类  
  15.             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  16.             //建立Builder对象  
  17.             DocumentBuilder builder = factory.newDocumentBuilder();  
  18.             //将制定内容解析为XML文档,返回一个Document对象  
  19.             Document doc = builder.parse(file);  
  20.             //建立NodeList  
  21.             NodeList url_list = doc.getElementsByTagName("url");//取得url标签列表  
  22.             //取得url标签下的所有子标签  
  23.               
  24.             //取得encode标签内容  
  25.             Element e1 = (Element)url_list.item(0);  
  26.             address = e1.getElementsByTagName("encode").item(0).getFirstChild().getNodeValue();//加歌曲地址  
  27.             //取得decode标签内容  
  28.             Element e2 = (Element)url_list.item(0);  
  29.             address += "/"+e2.getElementsByTagName("decode").item(0).getFirstChild().getNodeValue();//加歌曲名  
  30.         }catch(Exception e){  
  31.             e.printStackTrace();  
  32.         }  
  33.         return address;  
  34.     }             

(3)、编写Servlet,处理JSP传递来的请求,这里主要覆写HttpServlet的doGet与doPost方法。我们将获取JSP的参数并传递到百度音乐接口中,将这个字符串新建URL并连接,然后通过IO流保存XML文件,***调用前面的工具类得到播放地址。***请求转发到另一个JSP中。

 
 
 
  1. package cn.guet.hj.servlet;  
  2. import javax.servlet.*;  
  3. import javax.servlet.http.*;  
  4. import java.io.*;  
  5. import java.net.*;  
  6. /**  
  7. **   接收歌曲名与歌手名 处理请求  
  8. **/   
  9. public class MusicServlet extends HttpServlet{  
  10.     //处理Get请求  
  11.     public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{  
  12.         request.setCharacterEncoding("GBK");  
  13.         String person_name = request.getParameter("person_name");  
  14.         String music_name = request.getParameter("music_name");  
  15.         //将会返回歌曲信息的XML  
  16.         String url_str = "http://box.zhangmen.baidu.com/x?op=12&count=1&title="+music_name+"$$"+person_name+"$$$$";  
  17.           
  18.         URL url = new URL(url_str);//新建URL对象  
  19.         URLConnection conn = url.openConnection();//连接对象  
  20.         conn.connect();//发送连接  
  21.           
  22.         InputStream input = conn.getInputStream();//获取目的的输入流  
  23.         File file = new File("D:"+File.separator+music_name+".xml");  
  24.         OutputStream output = new FileOutputStream(file);//输出流  
  25.         byte []b = new byte[20240];   
  26.         int len = input.read(b);  
  27.         output.write(b,0,len);  
  28.         //Dom解析  
  29.         String address = MusicDom.dom(file);//播放地址 调用解析Dom解析的类  
  30.         request.setAttribute("address",address);//设置属性  
  31.         //System.out.println(address);  
  32.         output.close();  
  33.         input.close();  
  34.         //请求转发  
  35.         RequestDispatcher view = request.getRequestDispatcher("music_play.jsp");  
  36.         view.forward(request,response);  
  37.     }  
  38.       
  39.     //处理Post请求  
  40.     public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{  
  41.         this.doGet(request,response);  
  42.     }  

(4)、写JSP页面,这里主要是一个超链接,连接到音乐地址。

 
 
 
  1. <%@ page language="java" contentType="text/html;charset=GBK" pageEncoding="GBK"%> 
  2. <%@ page import="java.net.*"%> 
  3. <%@ page import="java.io.*"%> 
  4.   
  5.   
  6. 播放音乐

     
  7.  
  8.  

总结:上面的例子实现了输入歌曲名与歌手名来找到歌曲的地址。这个例子主要综合了前面学过的XML文件解析,IO流,Servlet,JSP等知识,虽然实现过程不复杂,但是还是遇到很多问题,比如连接URL对象,获取XML文件这是以前没有接触,但是还是边学边做的写完了程序。此外,***一步超链接还是有一些问题,会出现403错误,还是要通过地址栏输入地址才能访问,这一步暂时还没解决。

原文链接:http://hepershade.iteye.com/blog/1488580

分享名称:百度音乐接口的应用
本文链接:http://www.shufengxianlan.com/qtweb/news28/252928.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联