예제 #1
0
        /// <summary>
        /// Cria um novo Request
        /// </summary>
        /// <param name="url">End-point da Api</param>
        /// <param name="headers">Conjunto de headers da requisição</param>
        /// <param name="xml">String xml</param>
        /// <returns></returns>
        private static HttpResponseMessage CriarRequest(string url, IDictionary <string, string> headers, string xml)
        {
            using (var handler = new WebRequestHandler())
            {
                handler.ClientCertificates.Add(Certificado.ObterCertificado());
                ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;

                using (var client = new HttpClient(handler))
                {
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

                    foreach (var header in headers)
                    {
                        client.DefaultRequestHeaders.Add(header.Key, header.Value);
                    }

                    xml = xml.Replace("\r\n", string.Empty);

                    using (var stringContent = new StringContent(xml, Encoding.UTF8, "application/xml"))
                    {
                        return(client.PostAsync(new Uri(Parametros.Url, url), stringContent).Result);
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Cria um novo Request GET
        /// </summary>
        /// <param name="url">End-point da Api</param>
        /// <param name="headers">Conjunto de headers da requisição</param>
        /// <param name="xml">String xml</param>
        /// <returns></returns>
        private static string CriarRequest(string url, IDictionary <string, string> headers)
        {
            using (var handler = new WebRequestHandler())
            {
                handler.ClientCertificates.Add(Certificado.ObterCertificado());
                ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;

                using (var client = new HttpClient(handler))
                {
                    foreach (var header in headers)
                    {
                        client.DefaultRequestHeaders.Add(header.Key, header.Value);
                    }

                    return(client.GetStringAsync(new Uri(Parametros.Url, url)).Result);
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Realiza um teste de certificado. Verifica se existe o certificado com o CPF parametrizado.
        /// </summary>
        /// <returns>Retorna falso caso o certificado não existir</returns>
        public static bool TestarCertificado()
        {
            try
            {
                var certificado = Certificado.ObterCertificado();

                if (certificado != null)
                {
                    return(true);
                }

                Log.GravarLog("Nenhum certificado encontrado para o CPF " + Parametros.CPFCertificado);
            }
            catch (Exception ex)
            {
                Log.GravarLog("Falha ao obter o certificado digital para o CPF " + Parametros.CPFCertificado + " - " + ex.Message);
            }

            return(false);
        }
예제 #4
0
        /// <summary>
        /// Realiza uma autenticação na api Siscomex
        /// </summary>
        /// <returns>Retorna um objeto com os Tokens de acesso</returns>
        public static Token Autenticar()
        {
            var token = new Token();

            using (var handler = new WebRequestHandler())
            {
                handler.ClientCertificates.Add(Certificado.ObterCertificado());
                ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;

                using (var client = new HttpClient(handler))
                {
                    client.DefaultRequestHeaders.Add("Role-Type", Parametros.Perfil);

                    var request  = new HttpRequestMessage(HttpMethod.Post, new Uri(Parametros.Url, "portal/api/autenticar"));
                    var response = client.SendAsync(request).Result;

                    response.EnsureSuccessStatusCode();

                    if (response.Headers.TryGetValues("set-token", out IEnumerable <string> valor))
                    {
                        token.SetToken = valor.FirstOrDefault();
                    }

                    if (response.Headers.TryGetValues("x-csrf-token", out valor))
                    {
                        token.CsrfToken = valor.FirstOrDefault();
                    }

                    if (response.Headers.TryGetValues("x-csrf-expiration", out valor))
                    {
                        token.CsrfExpiration = valor.FirstOrDefault();
                    }

                    return(token);
                }
            }
        }