private async Task <string> MakeRequest(IAbpMethodInvocation invocation) { using (var client = _httpClientFactory.Create()) { var baseUrl = GetBaseUrl(); var action = await _apiDescriptionFinder.FindActionAsync(baseUrl, typeof(TService), invocation.Method); var apiVersion = GetApiVersionInfo(action); var url = baseUrl + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion); var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url) { Content = RequestPayloadBuilder.BuildContent(action, invocation.ArgumentsDictionary, _jsonSerializer, apiVersion) }; AddHeaders(invocation, action, requestMessage, apiVersion); var response = await client.SendAsync(requestMessage); if (!response.IsSuccessStatusCode) { await ThrowExceptionForResponseAsync(response); } return(await response.Content.ReadAsStringAsync()); } }
private async Task <string> MakeRequest(IAbpMethodInvocation invocation) { using (var client = _httpClientFactory.Create()) { var clientConfig = _clientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}."); var baseUrl = GetBaseUrl(clientConfig); var action = await _apiDescriptionFinder.FindActionAsync(baseUrl, typeof(TService), invocation.Method); var apiVersion = GetApiVersionInfo(action); var url = baseUrl + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion); var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url) { Content = RequestPayloadBuilder.BuildContent(action, invocation.ArgumentsDictionary, _jsonSerializer, apiVersion) }; AddHeaders(invocation, action, requestMessage, apiVersion); var accessToken = await _accessTokenProvider.GetOrNullAsync(); if (accessToken != null) { //TODO: "Bearer" should not be static. client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); } var response = await client.SendAsync(requestMessage); if (!response.IsSuccessStatusCode) { await ThrowExceptionForResponseAsync(response); } return(await response.Content.ReadAsStringAsync()); } }
private async Task <string> MakeRequest(IAbpMethodInvocation invocation) { using (var client = _httpClientFactory.Create()) { var clientConfig = _clientOptions.HttpClientProxies.GetOrDefault(typeof(TService)) ?? throw new AbpException($"Could not get DynamicHttpClientProxyConfig for {typeof(TService).FullName}."); var remoteServiceConfig = _remoteServiceOptions.RemoteServices.GetConfigurationOrDefault(clientConfig.RemoteServiceName); var action = await _apiDescriptionFinder.FindActionAsync(remoteServiceConfig.BaseUrl, typeof(TService), invocation.Method); var apiVersion = GetApiVersionInfo(action); var url = remoteServiceConfig.BaseUrl + UrlBuilder.GenerateUrlWithParameters(action, invocation.ArgumentsDictionary, apiVersion); var requestMessage = new HttpRequestMessage(action.GetHttpMethod(), url) { Content = RequestPayloadBuilder.BuildContent(action, invocation.ArgumentsDictionary, _jsonSerializer, apiVersion) }; AddHeaders(invocation, action, requestMessage, apiVersion); await _clientAuthenticator.Authenticate( new RemoteServiceHttpClientAuthenticateContext( client, requestMessage, remoteServiceConfig ) ); var response = await client.SendAsync(requestMessage); if (!response.IsSuccessStatusCode) { await ThrowExceptionForResponseAsync(response); } return(await response.Content.ReadAsStringAsync()); } }
private async Task <ApplicationApiDescriptionModel> GetFromServerAsync(string baseUrl) { using (var client = _httpClientFactory.Create()) { var response = await client.GetAsync(baseUrl + "api/abp/api-definition"); if (!response.IsSuccessStatusCode) { throw new AbpException("Remote service returns error!"); } var content = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject( content, typeof(ApplicationApiDescriptionModel), new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }); return((ApplicationApiDescriptionModel)result); } }