/// <summary> /// 从微信服务器下载多媒体文件,返回实际存储在本地的文件名,null则下载失败 /// </summary> /// <param name="filePathName">保存在本地的文件名,(由于文件扩展名未知)文件名以实际返回为准</param> /// <param name="media_id">媒体文件Id</param> /// <returns>实际存储在本地的文件名</returns> public string DownloadMediaFile(string filePathName, string media_id) { string url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}"; url = string.Format(url, Connect.GetAccessToken(), media_id); try { string fileName = SimulateRequest.DownloadFile(url, filePathName); _logObj.InfoFormat("下载多媒体文件DownloadMediaFile(),微信处理成功,文件存储为:" + fileName); return(fileName); } catch (Exception ex) { if (ex.Message.StartsWith("{") && ex.Message.EndsWith("}")) { var resultObj = JsonConvert.DeserializeObject <JObject>(ex.Message); if (resultObj["errcode"] != null && resultObj["errcode"].ToString() != "0") { _logObj.Error("下载多媒体文件DownloadMediaFile(),微信服务报错"); var errorCode = new WeixinErrorInfo(resultObj["errcode"].ToString()); _logObj.Warn(string.Format("{0}【errmsg:{1}】", errorCode.ToString(), resultObj["errmsg"].ToString())); } } else { _logObj.Error("下载多媒体文件DownloadMediaFile(),出错", ex); } } return(null); }
/// <summary> /// 直接去微信获取AccessToken /// </summary> /// <returns>微信提供的AccessToken</returns> private string GetWeixinAccessToken() { logObj.Info("直接去微信获取AccessToken,GetWeixinAccessToken()"); string accessToken = String.Empty; string appId = ConfigurationManager.AppSettings["AppID"]; string secret = ConfigurationManager.AppSettings["AppSecret"]; string url = String.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, secret); string resultStr = SimulateRequest.HttpGet(url); var resultObj = JsonConvert.DeserializeObject <JObject>(resultStr); if (resultObj["errcode"] != null) { logObj.Info("直接去微信获取AccessToken,GetWeixinAccessToken(),微信服务报错"); var errorCode = new WeixinErrorInfo(resultObj["errcode"].ToString()); logObj.Warn(string.Format("{0}【errmsg:{1}】", errorCode.ToString(), resultObj["errmsg"].ToString())); } else { accessToken = resultObj["access_token"].ToString(); logObj.InfoFormat("直接去微信获取AccessToken,GetWeixinAccessToken(),微信access_token:{0}", accessToken); } WeChatDataManage.InsertWeChatData(new WeChatData() { Key = "AccessToken", Value = resultStr }); logObj.Info("直接去微信获取AccessToken,GetWeixinAccessToken(),返回:" + accessToken); return(accessToken); }
/// <summary> /// 上传多媒体文件,返回上传成功的media_id,否则null /// </summary> /// <param name="filePathName">包括完整路径的文件名</param> /// <param name="fileData">文件数据</param> /// <param name="fileType">文件类型:图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)</param> /// <returns>上传成功的media_id,否则null</returns> public MediaFile UploadMediaFile(string filePathName, string fileType) { //上传的多媒体文件有格式和大小限制,如下: //图片(image): 1M,支持JPG格式 //语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式 //视频(video):10MB,支持MP4格式 //缩略图(thumb):64KB,支持JPG格式 //媒体文件在后台保存时间为3天,即3天后media_id失效 string url = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}"; Stream fileStream = new FileStream(filePathName, FileMode.Open, FileAccess.Read); UploadParameter uploadParam = new UploadParameter() { FileNameValue = Path.GetFileName(filePathName), UploadStream = fileStream }; url = string.Format(url, Connect.GetAccessToken(), fileType); uploadParam.Url = url; string resultStr = SimulateRequest.UploadFile(uploadParam); var resultObj = JsonConvert.DeserializeObject <JObject>(resultStr); if (resultObj["errcode"] != null && resultObj["errcode"].ToString() != "0") { _logObj.Error("上传多媒体文件UploadMediaFile(),微信服务报错"); var errorCode = new WeixinErrorInfo(resultObj["errcode"].ToString()); _logObj.Warn(string.Format("{0}【errmsg:{1}】", errorCode.ToString(), resultObj["errmsg"].ToString())); return(null); } else { _logObj.InfoFormat("上传多媒体文件UploadMediaFile(),微信处理成功"); MediaFile mediaFile = JsonConvert.DeserializeObject <MediaFile>(resultStr); return(mediaFile); } }