private T SendCommand <T>(Uri endpoint, object payload = null) where T : class { var httpWebRequest = (HttpWebRequest)WebRequest.Create(endpoint); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; httpWebRequest.Accept = "application/json"; httpWebRequest.Headers.Add(ServerConfiguration.Headers.Version, (typeof(ServerChannel).Assembly.GetName().Version.ToString())); httpWebRequest.Headers.Add(ServerConfiguration.Headers.WorkerRegistrationToken, Token.HasValue?Token.ToString():""); using (var writer = new StreamWriter(httpWebRequest.GetRequestStream())) { writer.Write(JsonNetHelper.Serialize(payload)); } using (var reader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream())) { var body = reader.ReadToEnd(); try { return(JsonNetHelper.Deserialize <T>(body)); } catch (JsonException ex) { Logger.Error(ex); Logger.Error(body); throw; } } }
public override IValueProvider GetValueProvider(ControllerContext controllerContext) { // first make sure we have a valid context if (controllerContext == null) { throw new ArgumentNullException("controllerContext"); } // now make sure we are dealing with a json request if ( !controllerContext.HttpContext.Request.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase)) { return(null); } // get a generic stream reader (get reader for the http stream) object jsonObject; using (var streamReader = new StreamReader(controllerContext.HttpContext.Request.InputStream)) { using (var JSONReader = new JsonTextReader(streamReader)) { if (!JSONReader.Read()) { return(null); } // make a new Json serializer //var JSONSerializer = JsonNetHelper.CreateDefault(JsonNetHelper.GetSerializerSettings()); //// add the dyamic object converter to our serializer //JSONSerializer.Converters.Add(new ExpandoObjectConverter()); // use JSON.NET to deserialize object to a dynamic (expando) object // if we start with a "[", treat this as an array if (JSONReader.TokenType == JsonToken.StartArray) { jsonObject = JsonNetHelper.Deserialize <List <ExpandoObject> >(JSONReader.ReadAsString()); } else { jsonObject = JsonNetHelper.Deserialize <ExpandoObject>(JSONReader.ReadAsString()); } } } // create a backing store to hold all properties for this deserialization var backingStore = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase); // add all properties to this backing store AddToBackingStore(backingStore, String.Empty, jsonObject); // return the object in a dictionary value provider so the MVC understands it return(new DictionaryValueProvider <object>(backingStore, CultureInfo.CurrentCulture)); }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { if ( !controllerContext.HttpContext.Request.ContentType.StartsWith("application/json", StringComparison.OrdinalIgnoreCase)) { return(_defaultModelBinder.BindModel(controllerContext, bindingContext)); } controllerContext.HttpContext.Request.InputStream.Position = 0; using (var streamReader = new StreamReader(controllerContext.HttpContext.Request.InputStream)) { var json = streamReader.ReadToEnd(); Log.Info("Json " + json); return(JsonNetHelper.Deserialize(json)); } }
public static T SendRequest <T>(Uri endpoint, object payload = null) where T : class { var httpWebRequest = (HttpWebRequest)WebRequest.Create(endpoint); httpWebRequest.ContentType = "application/json"; httpWebRequest.Method = "POST"; httpWebRequest.Accept = "application/json"; httpWebRequest.Headers.Add(ServerConfiguration.Headers.Version, typeof(Program).Assembly.GetName().Version.ToString()); using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) { streamWriter.Write(JsonNetHelper.Serialize(payload)); streamWriter.Flush(); streamWriter.Close(); var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); return(JsonNetHelper.Deserialize <T>(result)); } } }