/// <summary> /// Envio de HttpWebRequest /// </summary> /// <param name="dataToSend"></param> /// <param name="httpVerbEnum"></param> /// <param name="httpContentTypeEnum"></param> /// <param name="serviceEndpoint"></param> /// <param name="headerData"></param> /// <param name="allowInvalidCertificate"></param> /// <param name="ignoreResponse"></param> /// <returns></returns> public HttpResponse SendHttpWebRequest(string dataToSend, HttpVerbEnum httpVerbEnum, string contentType, string accept, string serviceEndpoint, NameValueCollection headerData) { if (string.IsNullOrWhiteSpace(serviceEndpoint)) { throw new ArgumentException("serviceEndpoint"); } // Cria um objeto webRequest para referenciando a Url do serviço informado var serviceUri = new Uri(serviceEndpoint); if (WebRequest.Create(serviceUri) is HttpWebRequest httpWebRequest) { httpWebRequest.Method = httpVerbEnum.ToString().ToUpper(); if (string.IsNullOrEmpty(contentType) == false) { httpWebRequest.ContentType = contentType; } if (string.IsNullOrEmpty(accept) == false) { httpWebRequest.Accept = accept; } if (headerData != null && headerData.AllKeys.Contains("User-Agent") == true) { httpWebRequest.UserAgent = headerData["User-Agent"]; headerData.Remove("User-Agent"); } // Verifica se deverão ser enviados dados/chaves de cabeçalho if (headerData != null && headerData.Count > 0) { // Insere cada chave enviado no cabeçalho da requisição foreach (string key in headerData.Keys) { httpWebRequest.Headers.Add(key, headerData[key].ToString()); } } if (string.IsNullOrWhiteSpace(dataToSend) == false) { // Cria um array de bytes dos dados que serão postados byte[] byteData = Encoding.UTF8.GetBytes(dataToSend); // Configura o tamanho dos dados que serão enviados httpWebRequest.ContentLength = byteData.Length; // Escreve os dados na stream do WebRequest using (Stream stream = httpWebRequest.GetRequestStream()) { stream.Write(byteData, 0, byteData.Length); } } string rawResponse = null; HttpStatusCode statusCode = HttpStatusCode.OK; try { // Dispara a requisição e recebe o resultado da mesma using (var response = httpWebRequest.GetResponse() as HttpWebResponse) { // Recupera a stream com a resposta da solicitação if (response != null) { var streamReader = new StreamReader(response.GetResponseStream() ?? throw new InvalidOperationException()); rawResponse = streamReader.ReadToEnd(); } if (response != null) { statusCode = response.StatusCode; } } } catch (WebException ex) { if (ex.Response == null) { throw; } var response = (HttpWebResponse)ex.Response; var test = new StreamReader(response.GetResponseStream() ?? throw new InvalidOperationException()); rawResponse = test.ReadToEnd(); statusCode = response.StatusCode; } return(new HttpResponse(rawResponse, statusCode)); } throw new ArgumentException("serviceEndpoint"); }
/// <summary> /// Envio de HttpWebRequest /// </summary> /// <param name="dataToSend"></param> /// <param name="httpVerbEnum"></param> /// <param name="httpContentTypeEnum"></param> /// <param name="serviceEndpoint"></param> /// <param name="headerData"></param> /// <param name="allowInvalidCertificate"></param> /// <param name="ignoreResponse"></param> /// <returns></returns> private HttpResponse SendHttpWebRequest(string dataToSend, HttpVerbEnum httpVerbEnum, HttpContentTypeEnum httpContentTypeEnum, string serviceEndpoint, NameValueCollection headerData, bool allowInvalidCertificate = false) { if (string.IsNullOrWhiteSpace(serviceEndpoint)) { throw new ArgumentException("serviceEndpoint"); } // Cria um objeto webRequest para referenciando a Url do serviço informado Uri serviceUri = new Uri(serviceEndpoint); HttpWebRequest httpWebRequest = WebRequest.Create(serviceUri) as HttpWebRequest; httpWebRequest.Method = httpVerbEnum.ToString().ToUpper(); httpWebRequest.ContentType = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml"; httpWebRequest.Accept = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml"; if (headerData != null && headerData.AllKeys.Contains("User-Agent") == true) { httpWebRequest.UserAgent = headerData["User-Agent"]; headerData.Remove("User-Agent"); } // Verifica se certificados inválidos devem ser aceitos. if (allowInvalidCertificate == true) { ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); }; } // Verifica se deverão ser enviados dados/chaves de cabeçalho if (headerData != null && headerData.Count > 0) { // Insere cada chave enviado no cabeçalho da requisição foreach (string key in headerData.Keys) { httpWebRequest.Headers.Add(key, headerData[key].ToString()); } } if (string.IsNullOrWhiteSpace(dataToSend) == false) { // Cria um array de bytes dos dados que serão postados byte[] byteData = UTF8Encoding.UTF8.GetBytes(dataToSend); // Configura o tamanho dos dados que serão enviados httpWebRequest.ContentLength = byteData.Length; // Escreve os dados na stream do WebRequest using (Stream stream = httpWebRequest.GetRequestStream()) { stream.Write(byteData, 0, byteData.Length); } } string rawResponse = string.Empty; HttpStatusCode statusCode = HttpStatusCode.OK; try { // Dispara a requisição e recebe o resultado da mesma using (HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse) { // Recupera a stream com a resposta da solicitação StreamReader streamReader = new StreamReader(response.GetResponseStream()); rawResponse = streamReader.ReadToEnd(); statusCode = response.StatusCode; } } catch (WebException ex) { HttpWebResponse response = (HttpWebResponse)ex.Response; StreamReader test = new StreamReader(response.GetResponseStream()); rawResponse = test.ReadToEnd(); statusCode = response.StatusCode; } return(new HttpResponse(rawResponse, statusCode)); }
/// <summary> /// Envio de HttpWebRequest /// </summary> /// <param name="dataToSend"></param> /// <param name="httpVerbEnum"></param> /// <param name="httpContentTypeEnum"></param> /// <param name="serviceEndpoint"></param> /// <param name="headerData"></param> /// <param name="allowInvalidCertificate"></param> /// <param name="ignoreResponse"></param> /// <returns></returns> public string SendHttpWebRequest(string dataToSend, HttpVerbEnum httpVerbEnum, HttpContentTypeEnum httpContentTypeEnum, string serviceEndpoint, NameValueCollection headerData, bool allowInvalidCertificate = false, bool ignoreResponse = false) { if (string.IsNullOrWhiteSpace(serviceEndpoint)) { throw new ArgumentException("serviceEndpoint"); } // Cria um objeto webRequest para referenciando a Url do serviço informado Uri serviceUri = new Uri(serviceEndpoint); HttpWebRequest httpWebRequest = WebRequest.Create(serviceUri) as HttpWebRequest; httpWebRequest.Method = httpVerbEnum.ToString().ToUpper(); httpWebRequest.ContentType = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml"; httpWebRequest.Accept = httpContentTypeEnum == HttpContentTypeEnum.Json ? "application/json" : "text/xml"; httpWebRequest.ContentLength = 0; // Verifica se certificados inválidos devem ser aceitos. ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => allowInvalidCertificate); // Verifica se deverão ser enviados dados/chaves de cabeçalho if (headerData.Count > 0) { // Insere cada chave enviado no cabeçalho da requisição foreach (string key in headerData.Keys) { httpWebRequest.Headers.Add(key, headerData[key].ToString()); } } if (string.IsNullOrWhiteSpace(dataToSend) == false) { // Cria um array de bytes dos dados que serão postados byte[] byteData = UTF8Encoding.UTF8.GetBytes(dataToSend); // Configura o tamanho dos dados que serão enviados httpWebRequest.ContentLength = byteData.Length; // Escreve os dados na stream do WebRequest using (Stream stream = httpWebRequest.GetRequestStream()) { stream.Write(byteData, 0, byteData.Length); } } string returnString = string.Empty; try { // Dispara a requisição e recebe o resultado da mesma using (HttpWebResponse response = httpWebRequest.GetResponse() as HttpWebResponse) { if (ignoreResponse == false) { // Recupera a stream com a resposta da solicitação StreamReader streamReader = new StreamReader(response.GetResponseStream()); returnString = streamReader.ReadToEnd(); } } } catch (WebException ex) { throw ex; } return(returnString); }