百度音乐接口的应用

百度音乐接口的应用

2012-05-24 13:55 Hepershade ITEYE  字号: T |  T
一键收藏,随时查看,分享好友!

上面的例子实现了输入歌曲名与歌手名来找到歌曲的地址。这个例子主要综合了前面学过的XML文件解析,IO流,Servlet,JSP等知识,虽然实现过程不复杂,但是还是遇到很多问题。

AD:2013云计算架构师峰会课程资料下载

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

(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

在信息技术快速发展的背景下,构建高效的数据处理与信息管理平台已成为提升企业运营效能的重要途径。本文系统阐述基于Pentaho Data Integration(简称Kettle)中Carte组件实现的任务管理架构,重点分析在系统构建过程中采用的信息化管理方法及其技术实现路径。 作为专业的ETL(数据抽取、转换与加载)工具,Kettle支持从多样化数据源获取信息,并完成数据清洗、格式转换及目标系统导入等操作。其内置的Carte模块以轻量级HTTP服务器形态运行,通过RESTful接口提供作业与转换任务的远程管控能力,特别适用于需要分布式任务调度与状态监控的大规模数据处理环境。 在人工智能应用场景中,项目实践常需处理海量数据以支撑模型训练与决策分析。本系统通过整合Carte服务功能,构建具备智能调度特性的任务管理机制,有效保障数据传递的准确性与时效性,并通过科学的并发控制策略优化系统资源利用,从而全面提升数据处理效能。 在系统架构设计层面,核心目标在于实现数据处理流程的高度自动化,最大限度减少人工干预,同时确保系统架构的弹性扩展与稳定运行。后端服务采用Java语言开发,充分利用其跨平台特性与丰富的类库资源构建稳健的服务逻辑;前端界面则运用HTML5、CSS3及JavaScript等现代Web技术,打造直观的任务监控与调度操作界面,显著提升管理效率。 关键技术要素包括: 1. Pentaho数据集成工具:提供可视化作业设计界面,支持多源数据接入与复杂数据处理流程 2. Carte服务架构:基于HTTP协议的轻量级服务组件,通过标准化接口实现远程任务管理 3. 系统设计原则:遵循模块化与分层架构理念,确保数据安全、运行效能与系统可维护性 4. Java技术体系:构建高可靠性后端服务的核心开发平台 5. 并发管理机制:通过优先级调度与资源分配算法实现任务执行秩序控制 6. 信息化管理策略:注重数据实时同步与系统协同运作,强化决策支持能力 7. 前端技术组合:运用现代Web标准创建交互式管理界面 8. 分布式部署方案:依托Carte服务实现多节点任务分发与状态监控 该管理系统的实施不仅需要熟练掌握Kettle工具链与Carte服务特性,更需统筹Java后端架构与Web前端技术,最终形成符合大数据时代企业需求的智能化信息管理解决方案。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
【数据融合】【状态估计】基于KF、UKF、EKF、PF、FKF、DKF卡尔曼滤波KF、无迹卡尔曼滤波UKF、拓展卡尔曼滤波数据融合研究(Matlab代码实现)内容概要:本文围绕状态估计与数据融合技术展开,重点研究了基于卡尔曼滤波(KF)、无迹卡尔曼滤波(UKF)、扩展卡尔曼滤波(EKF)、粒子滤波(PF)、固定增益卡尔曼滤波(FKF)和分布式卡尔曼滤波(DKF)等多种滤波算法的理论与Matlab代码实现,涵盖其在非线性系统、多源数据融合及动态环境下的应用。文中结合具体案例如四旋翼飞行器控制、水下机器人建模等,展示了各类滤波方法在状态估计中的性能对比与优化策略,并提供了完整的仿真代码支持。此外,还涉及信号处理、路径规划、故障诊断等相关交叉领域的综合应用。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、机器人、导航与控制系统开发的工程技术人员。; 使用场景及目标:①深入理解各类卡尔曼滤波及其变种的基本原理与适用条件;②掌握在实际系统中进行状态估计与数据融合的建模与仿真方法;③为科研项目、论文复现或工程开发提供可运行的Matlab代码参考与技术支撑; 阅读建议:建议结合文中提供的Matlab代码逐项运行与调试,对照算法流程理解每一步的数学推导与实现细节,同时可拓展至其他非线性估计问题中进行对比实验,以提升对滤波算法选型与参数调优的实战能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值