private static async Task <object> ParseKnownTypes(HttpListenerContext httpContext, WebServerRequestContext ctx) { ContentType ct; try { ct = new ContentType(httpContext.Request.ContentType); } catch (FormatException) { return(null); } string payload; switch (ct.MediaType) { case "application/x-www-form-urlencoded": payload = await ctx.ReadAsString(); if (payload == null) { return("(empty)"); } ctx.FormData = QueryStringValuesCollection.Parse(payload); return(ctx.FormData); case "application/json": payload = await ctx.ReadAsString(); if (payload == null) { return("(empty)"); } ctx.JsonData = JToken.Parse(payload); return(ctx.JsonData); case "text/xml": payload = await ctx.ReadAsString(); if (payload == null) { return("(empty)"); } ctx.XmlData = XDocument.Parse(payload); return(ctx.XmlData); default: return(null); } }