成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

百度音樂接口的應用

開發
上面的例子實現了輸入歌曲名與歌手名來找到歌曲的地址。這個例子主要綜合了前面學過的XML文件解析,IO流,Servlet,JSP等知識,雖然實現過程不復雜,但是還是遇到很多問題。

這里實現能夠實現輸入歌曲名與歌手名,***找到該歌曲的播放地址,并通過超鏈接的形式打開或播放。以下是實現過程:

(1)、首先是一個JSP,接收歌曲名與歌手名,并提交給Servlet處理。

  1. <%@ page contentType="text/html;charset=GBK" pageEncoding="GBK"%> 
  2. <html> 
  3. <body> 
  4. <center> 
  5. <h3><font color="green">輸入歌手和歌曲名找歌曲</font></h3> 
  6. <form action="music.do" method="post"> 
  7. 歌手名:<input type="text" name="person_name"><br> 
  8. 歌曲名:<input type="text" name="music_name"><br> 
  9. <input type="submit" value="下載歌曲"> 
  10. </form> 
  11. </center> 
  12. </body> 
  13. </html> 

(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.  <html> 
  5.  <body> 
  6. <a href="${address}" target="_blank"><h4><font color="red">播放音樂</font></h4></a> 
  7. </body> 
  8. </html> 

總結:上面的例子實現了輸入歌曲名與歌手名來找到歌曲的地址。這個例子主要綜合了前面學過的XML文件解析,IO流,Servlet,JSP等知識,雖然實現過程不復雜,但是還是遇到很多問題,比如連接URL對象,獲取XML文件這是以前沒有接觸,但是還是邊學邊做的寫完了程序。此外,***一步超鏈接還是有一些問題,會出現403錯誤,還是要通過地址欄輸入地址才能訪問,這一步暫時還沒解決。

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

責任編輯:張偉 來源: ITEYE
相關推薦

2012-10-19 09:47:30

百度云百度音樂云計算

2013-08-22 17:08:50

2014-07-25 17:12:39

數據庫WOT2014MongoDB

2013-08-26 09:15:38

百度輕應用

2013-07-01 17:21:21

百度云推送免費云推送移動開發

2013-03-11 10:16:52

百度BAE

2013-03-11 10:26:37

百度云MTC

2020-12-03 06:13:46

iOS

2014-09-04 02:25:24

百度世界大會2014直達號BaiduEye

2013-08-22 11:28:15

百度應用模式

2011-09-05 13:17:46

百度移動應用掌上百度

2013-11-04 17:38:09

Clouda百度

2012-03-23 12:12:37

百度開發者大會

2012-05-28 22:51:53

百度

2018-09-06 18:37:45

百度云

2011-06-01 17:40:29

百度收錄

2022-03-02 11:04:45

百度業務盈利

2015-10-28 13:40:28

高仿百度糯米源碼

2011-12-08 15:31:24

百度開放平臺

2016-03-25 11:18:23

中華網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲系列第一页 | 九色网址 | 亚洲a视 | 天天躁日日躁狠狠躁白人 | www久久av| 91传媒在线播放 | 欧美精品一二三 | 99久久精品国产麻豆演员表 | 久久精品亚洲精品国产欧美 | 久久国产美女视频 | 久久久成| 欧美激情综合网 | 精品国产第一区二区三区 | 毛色毛片免费看 | 国产精品免费福利 | 午夜小视频在线观看 | 在线观看黄色电影 | 丁香婷婷成人 | 日本一区高清 | 亚洲一二三在线观看 | 一区二区在线免费观看视频 | 亚洲视频观看 | 久久免费视频1 | 干干干操操操 | 2019天天操 | 美国十次成人欧美色导视频 | 国产福利网站 | 人人澡视频 | 香蕉婷婷 | 韩日有码| av网站免费 | 国产精品一二三区 | 免费一区二区三区在线视频 | 成人午夜视频在线观看 | 好好的日在线视频 | 国产激情第一页 | 久草视频在线播放 | 日日干日日操 | 中文字幕在线视频免费观看 | 日韩精品免费在线 | 99re热这里只有精品视频 |