public void ContentType_Request_Test() { //Assign IRequest baseRequest = new HttpRequest("http://test.com/", "command"); string contentType = "contentType"; IRequest target; HttpWebRequest actual; //Act target = new ContentTypeRequest(baseRequest, contentType); actual = target.Build(); //Assert Assert.AreEqual(contentType, actual.ContentType); }
public static RequestResult SendPostRequest(string URL, object data, ContentTypeRequest contentTypeRequest = ContentTypeRequest.Json, Dictionary <string, string> headers = null) { //dynamic result = new System.Dynamic.ExpandoObject(); RequestResult result = new RequestResult(); string HostApi = getUrl() + URL; var request = WebRequest.Create(HostApi) as HttpWebRequest; string contentType = "application/json; charset=utf-8"; if (contentTypeRequest != ContentTypeRequest.Json) { contentType = "application/x-www-form-urlencoded"; } request.KeepAlive = true; request.Method = "POST"; request.ContentType = contentType; //"application/x-www-form-urlencoded"; "application/json; charset=utf-8"; if (headers != null) { foreach (var item in headers) { request.Headers.Add(item.Key, item.Value); } } string param = string.Empty; if (contentType.Contains("application/json") == true) { param = JsonConvert.SerializeObject(data); } else { string dataTypeName = data.GetType().Name; if (dataTypeName == "String") { param = data.ToString(); } else { Type dataType = data.GetType(); bool isDict = dataType.IsGenericType && dataType.GetGenericTypeDefinition() == typeof(Dictionary <,>); if (isDict == true) { List <string> formData = new List <string>(); IDictionary idict = (IDictionary)data; IEnumerable <string> keys = idict.Keys.Cast <string>(); foreach (var key in keys) { formData.Add(string.Format("{0}={1}", key, idict[key])); } param = string.Join("&", formData); } else { var serialized = JsonConvert.SerializeObject(data); var deserialized = JsonConvert.DeserializeObject <Dictionary <string, string> >(serialized); param = deserialized.Select((kvp) => kvp.Key.ToString() + "=" + Uri.EscapeDataString(kvp.Value)).Aggregate((p1, p2) => p1 + "&" + p2); } } } byte[] byteArray = Encoding.UTF8.GetBytes(param); string responseContent = null; bool flagSuccess = false; try { using (var writer = request.GetRequestStream()) { writer.Write(byteArray, 0, byteArray.Length); } using (var response = request.GetResponse() as HttpWebResponse) { using (var reader = new StreamReader(response.GetResponseStream())) { responseContent = reader.ReadToEnd(); flagSuccess = true; } } } catch (WebException ex) { responseContent = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd(); } result.Content = responseContent; result.Status = flagSuccess; return(result); }