/// <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); } } } }
/// <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); } } }
/// <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); }
/// <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); } } }