/// <summary> /// 批量获取素材 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnBatchGet_Click(object sender, EventArgs e) { ltrMessage.Text = ""; lbMeterial.Items.Clear(); string userName = lbPublicAccount.SelectedValue; ErrorMessage errorMessage; int count = 20; foreach (MultiMediaTypeEnum type in Enum.GetValues(typeof(MultiMediaTypeEnum))) { int offset = 0; BatchMeterial bm = null; while (true) { bm = Meterial.BatchGet(userName, type, offset, count, out errorMessage); if (bm == null || !errorMessage.IsSuccess) { ltrMessage.Text = string.Format("批量获取素材错误。{0}", errorMessage); break; } offset += count; if (bm.Item != null && bm.Item.Length > 0) { foreach (MeterialItem mi in bm.Item) { lbMeterial.Items.Add(new ListItem(mi.ToString(), mi.MediaId)); } } } } ltrMessage.Text += string.Format("共获取到{0}个素材。", lbMeterial.Items.Count); }
/// <summary> /// 从xml字符串解析消息 /// </summary> /// <param name="xml">xml字符串</param> /// <returns>返回消息</returns> public static RequestBaseMessage Parse(string xml) { try { RequestBaseMessage msg = null; //将xml字符串解析成JObject对象 XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); string json = JsonConvert.SerializeXmlNode(doc); JObject jo = (JObject)JObject.Parse(json)["xml"]; string MsgType = (string)jo["MsgType"][CDATA_KEY]; WXLog.Write(MsgType, "进来" + MsgType + "事件了"); //解析消息基类 msg = ParseBaseMessage(jo); ErrorMessage e = null; BatchMeterial b = MyWay.Areas.WeiXin.Meterial.Meterial.BatchGet("测试公众号", MultiMediaTypeEnum.news, 0, 2, out e); //获取各分类的字段,并构造消息 switch (msg.MsgType) { case RequestMessageTypeEnum.text: string content = (string)jo["Content"][CDATA_KEY]; if (content == "天气") { msg = ParseImageMessage1(msg, jo, "https://mmbiz.qlogo.cn/mmbiz/D1aYATIFatWdxfb99IPptNDj3vqCiaSLpspegmdU4IFpRd40oqctN9gI9g2EZE4qq5eTqEAP2Xjb9J0onD5nNWQ/0?wx_fmt=jpeg", "nxoGNdQHF7AWPDlpfGZQ9_TkxdCdC3rUe0CbGZ5Ss5Y"); } else if (content == "时间") { msg = ParseTextMessage1(msg, jo); } else { msg = ParseTextMessage(msg, jo); } break; case RequestMessageTypeEnum.image: msg = ParseImageMessage(msg, jo); break; case RequestMessageTypeEnum.voice: msg = ParseVoiceMessage(msg, jo); break; case RequestMessageTypeEnum.video: msg = ParseVideoMessage(msg, jo); break; case RequestMessageTypeEnum.location: msg = ParseLocationMessage(msg, jo); break; case RequestMessageTypeEnum.link: msg = ParseLinkMessage(msg, jo); break; case RequestMessageTypeEnum.Event: msg = ParseEventMessage(msg, jo); break; default: throw new NotImplementedException(string.Format("未实现消息类型{0:g}解析。", msg.MsgType)); } //返回 return(msg); } catch (Exception ex) { Log.WriteFile(ex); throw; } }