微信公众平台开发(33)在线点歌/在线音乐

原文: http://www.cnblogs.com/imaker/p/5491433.html

微信公众平台在年前开放了新的消息接口-音乐消息,这是广大微信公众平台开发者的福音。
根据这一功能,如果能做出在微信中点歌功能,那么我们以后就可以不用安装其他APP,
直接在微信里面关注一个账号,就可以听歌了,还省去了安装的麻烦,而且不用再占用空间。如果音乐资源足够好,那将秒杀一切手机上在线听歌软件也不是没有可能的。


一、获取音乐资源

调用方法:

<a href="http://api2.sinaapp.com/search/music/?appkey=0020130430&appsecert=fa6095e1133d28ad&reqtype=music&keyword">http://api2.sinaapp.com/search/music/?appkey=0020130430&appsecert=fa6095e1133d28ad&reqtype=music&keyword</a>=歌曲名称

  返回格式:与微信音乐格式类似,json型:

 

{
    "errcode": 0,
    "msgtype": "music",
    "music": {
        "title": "歌曲名称",
        "description": "music",
        "musicurl": "音乐地址",
        "hqmusicurl": "音乐地址"
    }
}

失败时返回文本信息

{
    "errcode": "1",
    "msgtype": "text",
    "text": {
        "content": "检索音乐失败!"
    }
}

  

二、封装音乐消息

获取该音乐消息的代码如下:

public string GetMusic(string MusicName)
       {
           WebClient MyWebClient = new WebClient();
           MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于对向Internet资源的请求进行身份验证的网络凭据。
 
           Byte[] Comp = MyWebClient.DownloadData("http://api2.sinaapp.com/search/music/?appkey=0020130430&appsecert=fa6095e1133d28ad&reqtype=music&keyword=" + MusicName); //获取快递公司数据
           var pageHtml = Encoding.UTF8.GetString(Comp); //如果获取网站页面采用的是UTF-8,则使用这句
           JavaScriptSerializer js = new JavaScriptSerializer();
           var obj = js.DeserializeObject(pageHtml);
           Dictionary<string, object> dic = obj as Dictionary<string, object>;
           if (dic["errcode"].ToString() == "0")
           {
               Dictionary<string, object> dic2 = dic.Values.ToArray()[2] as Dictionary<string, object>;
               string title = dic2["title"].ToString();
               string musicurl = dic2["musicurl"].ToString();
               string hqmusicurl = dic2["hqmusicurl"].ToString();
               return ResponseMusicMsg(title, "按住可转发好友,播放失败请换首歌!", musicurl, hqmusicurl);
           }
           else {
               return ResponseText("[流泪] Sorry~ 你要的音乐我没有找到~ [流泪]");
           }
           
       }

  

生成微信相对应的xml

/// <summary>
       /// 回复音乐内容
       /// </summary>
       /// <param name="to">接收者</param>
       /// <param name="from">消息来源</param>
       /// <param name="title">标题</param>
       /// <param name="description">描述信息</param>
       /// <param name="musicurl">音乐链接</param>
       /// <param name="hqmusicurl">高质量音乐链接,WIFI环境优先使用该链接播放音乐</param>
       /// <returns>生成的输出文本</returns>
       public string ResponseMusicMsg(string title, string description, string musicurl, string hqmusicurl)
       {
           StringBuilder sb = new StringBuilder();
           sb.AppendFormat("<xml>");
           sb.AppendFormat("<ToUserName><![CDATA[{0}]]></ToUserName>", clientUser);
           sb.AppendFormat("<FromUserName><![CDATA[{0}]]></FromUserName>", serverUser);
           sb.AppendFormat("<CreateTime>{0}</CreateTime>", DateTime.Now.Ticks.ToString());
           sb.AppendFormat("<MsgType><![CDATA[music]]></MsgType>");
           sb.AppendFormat("<Music>");
           sb.AppendFormat("   <Title><![CDATA[{0}]]></Title>", title);
           sb.AppendFormat("   <Description><![CDATA[{0}]]></Description>", description);
           sb.AppendFormat("   <MusicUrl><![CDATA[{0}]]></MusicUrl>", musicurl);
           sb.AppendFormat("   <HQMusicUrl><![CDATA[{0}]]></HQMusicUrl>", hqmusicurl);
           sb.AppendFormat("   <FuncFlag>0</FuncFlag>");
           sb.AppendFormat("</Music>");
           sb.AppendFormat("</xml>");
           return sb.ToString();
       }

  

二、效果展示

建议使用wifi时候听歌

posted @ 2017-01-14 15:48  贝创工作室  阅读(1127)  评论(0编辑  收藏  举报