Example #1
0
        /// <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>());
        }
Example #2
0
        /// <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));
        }
Example #3
0
        /// <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));
        }
Example #4
0
        /// <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));
        }