/// <summary> /// 下载永久语音素材 /// </summary> /// <param name="media_id">媒体文件ID</param> /// <param name="config"></param> /// <returns></returns> public static async Task <Stream> GetVoice(string media_id, ApiConfig config = null) { using (var s = await ApiHelper.PostStream("https://api.weixin.qq.com/cgi-bin/material/get_material?$acac$", new { media_id }, config).ConfigureAwait(false)) { var ms = new MemoryStream(); await s.CopyToAsync(ms).ConfigureAwait(false); //估计错误消息应该不会大于400字节 if (ms.Length < 400) { var buffer = ms.ToArray(); var text = Encoding.UTF8.GetString(buffer); //如果是失败消息, 这里会抛出异常 ApiHelper.BuildVoid(text, config); } ms.Position = 0; return(ms); } }