/// <summary> /// Envia o Request para o servidor informando o tipo /// </summary> /// <typeparam name="TResponse">Objeto de retorno a ser deserializado do json</typeparam> /// <param name="method">Metodo do Request</param> /// <param name="RequestHeader">Cabeçalhos do Request</param> /// <param name="body">Conteudo do corpo do request. No caso do POST</param> /// <returns></returns> private async Task <Response> ExecuteRequestAsync <TResponse>(string method, List <KeyValuePair <string, string> > RequestHeader, object body = null) where TResponse : new() { HttpResponseMessage response = new HttpResponseMessage(new HttpStatusCode()); try { HttpRequestMessage request = new HttpRequestMessage(method: GetMethod(), requestUri: this.EndPoint) { }; //Define os headers informados client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("image/jpeg")); if (body != null) { request.Content = (HttpContent)body; } //foreach (var hdr in RequestHeader) //{ // request.Headers.TryAddWithoutValidation(hdr.Key, hdr.Value); //} if (RequestHeader != null) { RequestHeader.ForEach(hdr => request.Headers.Add(hdr.Key, hdr.Value)); } //**** Metodo Resposavel por enviar o Request Assincrono response = await client.SendAsync(request); //Serializa o json retornado var ResponseObject = JSerializer.ConvertStringToObject <TResponse>(response.Content.ReadAsStringAsync().Result); return(await Task.FromResult( new Response() { Status = response.StatusCode, Description = response.ReasonPhrase, Data = ResponseObject, HttpResponse = response })); HttpMethod GetMethod() => method == "GET" ? HttpMethod.Get : HttpMethod.Post; } catch (Exception e) { Console.WriteLine(e); throw; } }
private async Task <Response> ExecuteRequestAsync <TResponse>(string method, List <KeyValuePair <string, string> > RequestHeader, object body = null) where TResponse : new() { try { IRestRequest request = new RestRequest(EndPoint, GetMethod(), DataFormat.Json); IRestResponse <TResponse> response = new RestResponse <TResponse>(); //Define os cabeçalhos do request, caso tenha if (RequestHeader != null) { RequestHeader.ForEach(hdr => request.AddHeader(hdr.Key, hdr.Value)); } if (body != null) { request.AddParameter("body", body, ParameterType.RequestBody); } //**** Metodo Resposavel por enviar o Request Assincrono response = client.Execute <TResponse>(request); var ResponseObject = JSerializer.ConvertStringToObject <TResponse>(response.Content); return(await Task.FromResult( new Response() { Status = response.StatusCode, Description = response.StatusDescription, Data = ResponseObject, HttpResponse = response })); //C# 6.0 - Metodo Local. Visivel somente no escopo dessa função Method GetMethod() => method == "GET" ? Method.GET : Method.POST; } catch (Exception e) { Console.WriteLine(e); throw; } }