private HttpRequestMessage BuildHttpPostRequestMessage(string targetUrl, IMiniProgramRequest miniProgramRequest)
 {
     return(new HttpRequestMessage(HttpMethod.Post, targetUrl)
     {
         Content = new StringContent(miniProgramRequest.ToString())
     });
 }
        private string BuildQueryString(string targetUrl, IMiniProgramRequest request)
        {
            if (request == null)
            {
                return(targetUrl);
            }

            var type       = request.GetType();
            var properties = type.GetProperties();

            if (properties.Length > 0)
            {
                targetUrl = targetUrl.EnsureEndsWith('&');
            }

            var queryStringBuilder = new StringBuilder(targetUrl);

            foreach (var propertyInfo in properties)
            {
                var jsonProperty = propertyInfo.GetCustomAttribute <JsonPropertyAttribute>();
                var propertyName = jsonProperty != null ? jsonProperty.PropertyName : propertyInfo.Name;

                queryStringBuilder.Append($"{propertyName}={propertyInfo.GetValue(request)}&");
            }

            return(queryStringBuilder.ToString().TrimEnd('&'));
        }
        private HttpRequestMessage BuildHttpGetRequestMessage(string targetUrl, IMiniProgramRequest miniProgramRequest)
        {
            if (miniProgramRequest == null)
            {
                return(new HttpRequestMessage(HttpMethod.Get, targetUrl));
            }

            var requestUrl = BuildQueryString(targetUrl, miniProgramRequest);

            return(new HttpRequestMessage(HttpMethod.Get, requestUrl));
        }
Exemplo n.º 4
0
        private async Task <HttpResponseMessage> RequestGetHttpResponseMessageAsync(string targetUrl, HttpMethod method,
                                                                                    IMiniProgramRequest miniProgramRequest = null, bool withAccessToken = true)
        {
            var client = _httpClientFactory.CreateClient();

            targetUrl = targetUrl.EnsureEndsWith('?');

            if (withAccessToken)
            {
                targetUrl += $"access_token={await _accessTokenAccessor.GetAccessTokenAsync()}";
            }

            var requestMsg = method == HttpMethod.Get
                ? BuildHttpGetRequestMessage(targetUrl, miniProgramRequest)
                : BuildHttpPostRequestMessage(targetUrl, miniProgramRequest);

            return(await client.SendAsync(requestMsg));
        }
Exemplo n.º 5
0
        public async Task <TResponse> RequestGetBinaryDataAsync <TResponse>(string targetUrl, HttpMethod method,
                                                                            IMiniProgramRequest miniProgramRequest = null, bool withAccessToken = true) where TResponse : IHasBinaryData
        {
            var responseMessage =
                await RequestGetHttpResponseMessageAsync(targetUrl, method, miniProgramRequest, withAccessToken);

            var resultStr = await responseMessage.Content.ReadAsStringAsync();

            try
            {
                return(JsonConvert.DeserializeObject <TResponse>(resultStr));
            }
            catch (Exception)
            {
                var result = JsonConvert.DeserializeObject <TResponse>("{}");
                // var result = default(TResponse);

                result.BinaryData = await responseMessage.Content.ReadAsByteArrayAsync();

                return(result);
            }
        }
        public async Task <TResponse> RequestAsync <TResponse>(string targetUrl, HttpMethod method, IMiniProgramRequest miniProgramRequest = null, bool withAccessToken = true)
        {
            var client = _httpClientFactory.CreateClient();

            targetUrl = targetUrl.EnsureEndsWith('?');

            if (withAccessToken)
            {
                targetUrl += $"access_token={await _accessTokenAccessor.GetAccessTokenAsync()}";
            }

            var requestMsg = method == HttpMethod.Get
                ? BuildHttpGetRequestMessage(targetUrl, miniProgramRequest)
                : BuildHttpPostRequestMessage(targetUrl, miniProgramRequest);

            var resultStr = await(await client.SendAsync(requestMsg)).Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <TResponse>(resultStr));
        }
Exemplo n.º 7
0
        public async Task <TResponse> RequestAsync <TResponse>(string targetUrl, HttpMethod method, IMiniProgramRequest miniProgramRequest = null, bool withAccessToken = true)
        {
            var responseMessage =
                await RequestGetHttpResponseMessageAsync(targetUrl, method, miniProgramRequest, withAccessToken);

            var resultStr = await responseMessage.Content.ReadAsStringAsync();

            return(JsonConvert.DeserializeObject <TResponse>(resultStr));
        }