百度Mp3的API在windows phone 7中的使用
最近重新寫了一個音樂的播放器。其中用到了百度音樂的API:http://cloud21.iteye.com/blog/611914
由於百度MP3的API的地址和我們請求的到得XML檔案都是GB2312編碼的。所以遇到了點麻煩。好了廢話不說,上程式碼。
namespace BaiduAPI_test
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
public class MusicUpdateState
{
public HttpWebRequest AsyncRequest { get; set; }
public HttpWebResponse AsyncResponse { get; set; }
}
private void btn_search_Click(object sender, RoutedEventArgs e)
{
//string gb_songname = utf_8_to_gb2312(SongName.Text);
//string gb_singername = utf_8_to_gb2312(SingerName.Text);
//由於百度的地址是用GB2312編碼的,所以要用HttpUtility.UrlEncode這個函式來編碼
string songname = HttpUtility.UrlEncode(SongName.Text);
string singername = HttpUtility.UrlEncode(SingerName.Text);
string Uri = "http://box.zhangmen.baidu.com/x?op=12&count=1&title=" + songname + "$$" + singername + "$$$$";
UriBuilder fullUri = new UriBuilder(Uri);
HttpWebRequest musicRequest = (HttpWebRequest)WebRequest.Create(fullUri.Uri);
MusicUpdateState musicState = new MusicUpdateState();
musicState.AsyncRequest = musicRequest;
musicRequest.BeginGetResponse(new AsyncCallback(HandleMusicResponse), musicState);
}
private void HandleMusicResponse(IAsyncResult asyncResult)
{
MusicUpdateState musicState = (MusicUpdateState)asyncResult.AsyncState;
HttpWebRequest musicRequest = (HttpWebRequest)musicState.AsyncRequest;
musicState.AsyncResponse = (HttpWebResponse)musicRequest.EndGetResponse(asyncResult);
Stream streamResult;
string encode = "";
string decode = "";
streamResult = musicState.AsyncResponse.GetResponseStream();
//這裡也是一樣的,請求得到的XML是用GB2312編碼的,直接用XmlReader讀取Stream的話會提示系統不支援GB2312編碼
var sr = new StreamReader(streamResult);
string srResult = sr.ReadToEnd();
//----Test----------
//Dispatcher.BeginInvoke(() =>
// {
// tb_decode.Text = srResult;
// });
using (XmlReader reader = XmlReader.Create(new StringReader(srResult)))
{
reader.ReadToFollowing("encode");
encode = reader.ReadElementContentAsString();
//百度地址中間的數字是7位或者8位的,所以要判斷最後一個是不是數字
string encodeUrl = encode.Substring(44,8);
string lastNumberUri = IsNumber(encodeUrl);
reader.ReadToFollowing("decode");
decode = reader.ReadElementContentAsString();
UriBuilder fullUri = new UriBuilder("http://zhangmenshiting.baidu.com/data/music/" + lastNumberUri + "/" + decode);
Dispatcher.BeginInvoke(() =>
{
BaiduMusicElement.Source = fullUri.Uri;
BaiduMusicElement.AutoPlay = true;
BaiduMusicElement.Position = TimeSpan.FromMilliseconds(0);
BaiduMusicElement.Play();
});
}
}
private string IsNumber(string str)
{//判斷str的最後一個字元是否數字
int result;
string lastOne = str.Substring(7);
if (int.TryParse(lastOne, out result))
{
return str;
}
else
{
return str.Substring(0, 7);
}
}
}
}
相關文章
- 使用百度分析的 APIAPI
- Windows Phone開發之輸入範圍InputScope的使用Windows
- Windows Phone FAQWindows
- 一個IT愛好者眼中的Windows Phone和Android PhoneWindowsAndroid
- 在React中使用百度地圖api的一系列demoReact地圖API
- Windows Phone 7 開發 31 日談——第25日:外部APIWindowsAPI
- Windows Phone 體驗Windows
- 在 HTTPS 專案中使用百度地圖 APIHTTP地圖API
- 在Windows Phone專案中呼叫C語言DLLWindowsC語言
- Windows Phone是如何被微軟ZUO死的?Windows微軟
- Windows Phone 部分控制元件的應用Windows控制元件
- 獲取 Windows Phone 的 User-Agent 字串Windows字串
- 在Delphi中巧用WINDOWS 的API函式 (轉)WindowsAPI函式
- Vagrant 在 Windows 下的使用Windows
- windows10系統設定和使用Your Phone應用的方法Windows
- Dribbble for windows phone 8Windows
- 【轉】Windows Phone 8 開發環境的搭建Windows開發環境
- 《Windows Phone 7入門經典之使用Silverlight和XNA開發Windows Phone應用》書評Windows
- 【使用Unity開發Windows Phone上的2D遊戲】(2)初識工具UnityWindows遊戲
- git hub在windows上的使用GitWindows
- nginx在windows下的使用三NginxWindows
- 微軟官方:Windows Phone 在 7 個國家銷量超過 iPhone微軟WindowsiPhone
- Windows Phone 8 新增功能:TTS文字朗讀功能 和 語音識別 APIWindowsTTSAPI
- Windows Phone 解析圖片格式Windows
- Windows Phone網路HttpWebRequest用法WindowsHTTPWeb
- Windows Phone 7 墓碑機制Windows
- Windows Phone 7程式設計Windows程式設計
- 探索Windows Phone 7的單元測試(翻譯)Windows
- 與Windows Phone 7 相關的一些概念Windows
- Windows Phone 8 新增功能:對SD卡的訪問WindowsSD卡
- Windows (wince、 windows mobile、windows phone)錯誤程式碼大全Windows
- ShellExcute API 在PB11中的使用API
- Windows Phone 8 新增功能:Windows.Storage新的檔案操作型別Windows型別
- 百度地圖API入門——(5)百度地圖API的簡介地圖API
- 百度地圖API基本使用(一)地圖API
- 百度座標轉換API使用API
- Windows Phone 7 開發 31 日談——第21日:Silverlight Toolkit for Windows PhoneWindows
- Windows API GetUserNameEx 函式使用WindowsAPI函式