/// <summary> /// Get description cotentType /// </summary> /// <param name="contentType"></param> /// <returns></returns> private string GetContentTypeFromEnum(ContentTypeBody contentType) { FieldInfo fi = contentType.GetType().GetField(contentType.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); if (attributes.Length > 0) { return(attributes[0].Description); } else { return(contentType.ToString()); } }
/// <summary> /// metodo encargado de realizar un post a un servicio web /// </summary> /// <param name="urlBase"></param> /// <param name="resourceBase"></param> /// <param name="parameters"></param> /// <param name="headers"></param> /// <param name="bodySerilizer"></param> /// <param name="contentType"></param> /// <returns></returns> private ResponseServiceRequest Post(string urlBase, string resourceBase, List <Tuple <string, string> > parameters, List <Tuple <string, string> > headers, String bodySerilizer, ContentTypeBody contentType) { ResponseServiceRequest reponseServiceRequets = null; try { if (!String.IsNullOrEmpty(resourceBase) && !String.IsNullOrEmpty(urlBase)) { if (urlBase[urlBase.Length - 1] == '/' || urlBase[urlBase.Length - 1] == '\\') { urlBase = urlBase.Remove(urlBase.Length - 1); } if (resourceBase[0] == '/' || resourceBase[0] == '\\') { resourceBase = resourceBase.Remove(0); } urlBase = String.Concat(urlBase, "/", resourceBase); urlBase = AddParameterUrl(urlBase, parameters); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlBase); request.Method = MethodHttp.POST.ToString(); request.ContentType = GetContentTypeFromEnum(contentType); if (headers != null && headers.Count > 0) { foreach (Tuple <String, String> header in headers) { request.Headers.Add(header.Item1, header.Item2); } } if (String.IsNullOrEmpty(bodySerilizer)) { request.ContentLength = 0; } if (bodySerilizer != null) { using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(bodySerilizer); streamWriter.Flush(); streamWriter.Close(); } } HttpWebResponse httpResponse = (HttpWebResponse)request.GetResponse(); reponseServiceRequets = new ResponseServiceRequest() { HttpStatusCode = httpResponse.StatusCode, }; using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { reponseServiceRequets.StreamReaderResult = streamReader.ReadToEnd(); streamReader.Close(); } } } catch (WebException exceptionWeb) { reponseServiceRequets = GetResponseException(exceptionWeb); } catch (UriFormatException) { reponseServiceRequets = GetResponseExceptionUrlFormat(); } return(reponseServiceRequets); }
/// <summary> /// Metoto encargado de enviar un post por medio de un contrato /// </summary> /// <param name="urlBase"></param> /// <param name="resourceBase"></param> /// <param name="parameters"></param> /// <param name="headers"></param> /// <param name="bodyRequest"></param> /// <param name="contentType"></param> /// <returns></returns> ResponseServiceRequest IServiceRequestHttp.Post(string urlBase, string resourceBase, List <Tuple <string, string> > parameters, List <Tuple <string, string> > headers, string bodySerilizer, ContentTypeBody contentType) { return(Post(urlBase, resourceBase, parameters, headers, bodySerilizer, contentType)); }
/// <summary> /// Metoto postAsyncrono encargado /// </summary> /// <param name="urlBase"></param> /// <param name="resourceBase"></param> /// <param name="parameters"></param> /// <param name="headers"></param> /// <param name="bodySerilizer"></param> /// <param name="contentType"></param> /// <returns></returns> public async Task <ResponseServiceRequest> PostAsync(string urlBase, string resourceBase, List <Tuple <string, string> > parameters, List <Tuple <string, string> > headers, string bodySerilizer, ContentTypeBody contentType) { return(await Task.Factory.StartNew(() => Post(urlBase, resourceBase, parameters, headers, bodySerilizer, contentType))); }