/// <summary> /// post一个Api请求 /// </summary> /// <typeparam name="TRes"></typeparam> /// <param name="apiRoute"></param> /// <param name="req"></param> /// <param name="funcFormat"></param> /// <returns></returns> public static async Task <TRes> PostApi <TRes>(string apiRoute, object req = null, Func <HttpResponseMessage, Task <TRes> > funcFormat = null) where TRes : ResultMo, new() { var sysInfo = MemberShiper.AppAuthorize; var secretKeyRes = ApiSourceKeyUtil.GetAppSecretKey(sysInfo.AppSource); if (!secretKeyRes.IsSuccess()) { return(secretKeyRes.ConvertToResult <TRes>()); } var httpReq = new OsHttpRequest { HttpMothed = HttpMothed.POST, AddressUrl = string.Concat(apiUrlPre, apiRoute), CustomBody = JsonConvert.SerializeObject(req), RequestSet = r => { r.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json") { CharSet = "UTF-8" }; var ticket = MemberShiper.AppAuthorize.ToSignData(secretKeyRes.data); r.Content.Headers.Add("at_id", ticket); } }; httpReq.FormParameters.Add(new FormParameter()); return(await httpReq.RestCommon <TRes>()); }
/// <summary> /// 获取素材【临时素材】 文件流 /// </summary> /// <param name="mediaId"></param> /// <returns></returns> public async Task <WxFileResp> DownloadTempMediaAsync(string mediaId) { var accessToken = await GetAccessTokenFromCacheAsync(); if (!accessToken.IsSuccess()) { return(new WxFileResp().WithResp(accessToken));// accessToken.ConvertToResultInherit<WxFileResp>(); } var req = new OsHttpRequest { HttpMethod = HttpMethod.Get, AddressUrl = string.Concat(m_ApiUrl, $"/cgi-bin/media/get?access_token={accessToken.access_token}&media_id={mediaId}") }; return(await req.RestCommon(DownLoadFileAsync)); }
/// <summary> /// 下载【永久】素材文件 /// 视频 和 图文 请通过另外两个接口获取 /// </summary> /// <param name="mediaId"></param> /// <returns></returns> public async Task <WxFileResp> DownloadMediaAsync(string mediaId) { var accessToken = await GetAccessTokenAsync(); if (!accessToken.IsSuccess()) { return(accessToken.ConvertToResult <WxFileResp>()); } var req = new OsHttpRequest { HttpMothed = HttpMothed.POST, AddressUrl = string.Concat(m_ApiUrl, $"/cgi-bin/material/get_material?access_token=", accessToken.access_token) }; return(await req.RestCommon(DownLoadFileAsync)); }
/// <summary> /// 获取小程序二维码 /// 生成二维码的总数不限,但接口调用每天上限 10000 次 /// </summary> /// <param name="path"></param> /// <param name="width"></param> /// <returns></returns> public async Task <WxFileResp> DownloadMediaAsync(string path, int width) { var accessToken = await GetAccessTokenFromCacheAsync(); if (!accessToken.IsSuccess()) { return(new WxFileResp().WithResp(accessToken));// accessToken.ConvertToResultInherit<WxFileResp>(); } var req = new OsHttpRequest { HttpMethod = HttpMethod.Post, AddressUrl = string.Concat(m_ApiUrl, "/cgi-bin/wxaapp/createwxaqrcode?access_token=", accessToken.access_token), CustomBody = $"{{\"path\":\"{path}\",\"width\":{width}}}" }; return(await req.RestCommon(DownLoadFileAsync)); }