这是我的第一篇博克,呵呵。
在网络上播放mp3的时候首先要获取mp3列表,有几种方法来和服务器通讯,这里选择用webservice.服务器端用.net。
1。服务器端,C#代码:
新建一个服务:
[WebMethod]
public string getMusicList()
{
StringBuilder musicXmlList=new StringBuilder();
musicXmlList.Append("<MUSIC>");
string[] musicList;
musicList = System.IO.Directory.GetFiles(@"E:/music");
string s;
for (int i = 0; i < musicList.Length; i++)
{
s=musicList[i].Substring(musicList[i].LastIndexOf('//')+1);
musicXmlList.Append("<name>");
musicXmlList.Append(s);
musicXmlList.Append("</name>");
}
musicXmlList.Append("</MUSIC>");
return musicXmlList.ToString();
}
2:flex 代码:
package com.lly
{
/**
*
* @author Luolingyun
*
*/
import flash.events.EventDispatcher;
import mx.controls.Alert;
import mx.rpc.AbstractOperation;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.WebService;
/**
*通过webservice获取文件地址
*
*/
public class ClsMusic extends EventDispatcher
{
private var ws:WebService;
public var _op:AbstractOperation;
private var _msg:String;//错误信息
private var musicList:XMLList;
public function get MusicList():XMLList
{
return musicList;
}
public function ClsMusic()
{
getMusicList();
}
/*************************
* 获取webservice
* */
public function getWebservice():void
{
var url:String="http://192.168.1.17:7788/DataAccess.asmx?wsdl";
if(ws==null)
{
ws=new WebService();
ws.loadWSDL(url);
}
}
/***************************
* 获取mp3列表
* */
public function getMusicList():void
{
getWebservice();
_op=new AbstractOperation();
_op = ws.getOperation("getMusicList");
_op.addEventListener(ResultEvent.RESULT,getResult);
_op.addEventListener(FaultEvent.FAULT, getFault);
_op.send();
}
/**
*
* @param evt
*
*/
private function getResult(evt:ResultEvent):void
{
var xml:XML;
var xmlString:String;
var muInfoEvent:MusicListEvent
xml=new XML(evt.result);
xmlString=xml;
musicList=new XMLList(xmlString);
muInfoEvent=new MusicListEvent(MusicListEvent.MUSIC);
muInfoEvent.musicList=musicList;
this.dispatchEvent(muInfoEvent);
_op.removeEventListener(ResultEvent.RESULT,getResult);
}
private function getFault(evt:FaultEvent):void
{
_msg=evt.fault.faultDetail;
Alert.show(_msg);
//监听之后删除,避免重复监听
_op.removeEventListener(FaultEvent.FAULT, getFault);
}
}
}