コード例 #1
0
        public override async Task InvokeAsync(MethodInfo targetMethod, object[] args)
        {
            var argInfos    = InitArgumentInfos(targetMethod.GetParameters(), args);
            var urlTemplate = _urlBuilder.GetUrlTemplate(targetMethod);

            var requestMessage = HttpRequestUtil.BuildHttpRequestMessage(_httpConfig?.RequestHeaders, argInfos, urlTemplate);

            _logger?.LogDebug("Request url:{0} {1}", requestMessage.Method, requestMessage.RequestUri.AbsoluteUri);

            await _httpClient.SendAsync(requestMessage);
        }
コード例 #2
0
        public override async Task <T> InvokeAsyncT <T>(MethodInfo targetMethod, object[] args)
        {
            var argInfos    = InitArgumentInfos(targetMethod.GetParameters(), args);
            var urlTemplate = _urlBuilder.GetUrlTemplate(targetMethod);

            var requestMessage = HttpRequestUtil.BuildHttpRequestMessage(_httpConfig?.RequestHeaders, argInfos, urlTemplate);

            _logger?.LogDebug("Request url:{0} {1}", requestMessage.Method, requestMessage.RequestUri.AbsoluteUri);

            var response = await _httpClient.SendAsync(requestMessage);

            var content = await response.Content.ReadAsStringAsync();

            return(ConvertUtil.DeserializeObject <T>(content));
        }
コード例 #3
0
        public override object Invoke(MethodInfo targetMethod, object[] args)
        {
            //if the method is 'Config',then save the config data and return this instance for the next invoke
            if (IsConfigMethod(targetMethod, args))
            {
                _httpConfig         = args[0] as HttpConfig;
                _httpClient.Timeout = _httpConfig.Timeout;
                return(this);
            }
            var argInfos    = InitArgumentInfos(targetMethod.GetParameters(), args);
            var urlTemplate = _urlBuilder.GetUrlTemplate(targetMethod);

            var requestMessage = HttpRequestUtil.BuildHttpRequestMessage(_httpConfig?.RequestHeaders, argInfos, urlTemplate);

            _logger?.LogDebug("Request url:{0} {1}", requestMessage.Method, requestMessage.RequestUri.AbsoluteUri);

            var response = _httpClient.SendAsync(requestMessage).ConfigureAwait(false).GetAwaiter().GetResult();
            var content  = response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();

            return(ConvertUtil.DeserializeObject(targetMethod.ReturnType, content));
        }