From a9a6f2e3307058802024884ae4b86859adee69dd Mon Sep 17 00:00:00 2001 From: JIAY Date: Wed, 21 Aug 2019 16:19:56 +0800 Subject: [PATCH] byte copy change to StreamReader fix datalose bug --- WebServiceStudio/MessageTracer.cs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/WebServiceStudio/MessageTracer.cs b/WebServiceStudio/MessageTracer.cs index 9bd7beb..abfa8d6 100644 --- a/WebServiceStudio/MessageTracer.cs +++ b/WebServiceStudio/MessageTracer.cs @@ -113,9 +113,16 @@ internal static string ReadMessage(Stream from, int len, string contentType) if ((contentType.StartsWith("text/xml") || contentType.StartsWith("application/soap+xml")) || (contentType == "http://schemas.xmlsoap.org/soap/envelope/")) { - byte[] bytes = ReadStream(from, len); - var document = new XmlDocument(); - document.InnerXml = GetEncoding(contentType).GetString(bytes); + XmlDocument document = new XmlDocument(); + if (len >= 0) + { + byte[] bytes = ReadStream(from, len); + document.InnerXml = GetEncoding(contentType).GetString(bytes); + } + else + { + document = ReadStream(from, GetEncoding(contentType)); + } var w = new StringWriter(); var writer2 = new XmlTextWriter(w); writer2.Formatting = Formatting.Indented; @@ -173,6 +180,16 @@ private static byte[] ReadStream(Stream stream, int len) } return destinationArray; } + + private static XmlDocument ReadStream(Stream stream, Encoding encoder) + { + StreamReader sr = new StreamReader(stream, encoder); + String retXml = sr.ReadToEnd(); + sr.Close(); + XmlDocument doc = new XmlDocument(); + doc.LoadXml(retXml); + return doc; + } internal static int WriteMessage(Stream stream, string contentType, string str) {