/// <summary> /// Returns the Request content as raw, properly encoded bytes /// based on the TextEncoding setting. /// /// Translates Unicode strings (except for binary data) /// to underlying encoding and Binary data (b64_ prefix) /// is returned as raw data. /// </summary> /// <returns>byte[] data or null if no RequestContent</returns> public byte[] GetRequestContentBytes() { if (RequestContent == null) { return(null); } if (RequestContent.StartsWith("b64_")) { return(Convert.FromBase64String(RequestContent.Replace("b64_", ""))); } string textEncoding = TextEncoding.ToLower(); if (textEncoding == "utf-8") { return(Encoding.UTF8.GetBytes(RequestContent)); } try { // try to load the encoding specified var enc = Encoding.GetEncoding(TextEncoding); return(enc.GetBytes(RequestContent)); } catch {} // fallback to 'as-is/no' encoding return(WindowsEncoding.GetBytes(RequestContent)); }
/// <summary> /// Reliably returns the request content as a string. /// If the content is binary the result is returned /// binary markup characters are shown. /// </summary> /// <returns></returns> public string GetRequestContentAsString() { if (RequestContent == null) { return(null); } if (RequestContent.StartsWith("b64_")) { var enc = Encoding.GetEncoding(1252); var data = Convert.FromBase64String(RequestContent.Replace("b64_", "")); return(enc.GetString(data)); } return(RequestContent); }