コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
        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;
            }
        }