Reading and writing XML over an SslStream

Posted by Mark on Stack Overflow See other posts from Stack Overflow or by Mark
Published on 2010-05-03T07:05:40Z Indexed on 2010/05/03 7:08 UTC
Read the original article Hit count: 351

Filed under:
|

I want to read and write XML data over an SslStream. The data (written and read) consists of objects serialized by an XmlSerializer.

I have tried the following; (left some details out for clarity!)

TcpClient tcpClient = new TcpClient(server, port);
SslStream sslStream = new SslStream(tcpClient.GetStream(), true,
new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
sslStream.AuthenticateAsClient(server);
XmlReader xmlReader = XmlReader.Create(sslStream,readerSettings);
XmlWriter xmlWriter = XmlWriter.Create(sslStream,writerSettings);
myClass c = new myClass ();
XmlSerializer serializer = new XmlSerializer(typeof(myClass));
serializer.Serialize(xmlWriter, c);
myClass c2 = (myClass )serializer.Deserialize(xmlReader);

First of all, it appears that writing to the stream succeeds. But the XmlSerializer throws an error because of invalid XML. It appears that the first character read from the stream is '00' or a null-character. (I have googled this problem, and see a million people with the same 'problem', but no viable solution.) I can work around this 'issue' by using a StreamReader, read everything into a string and then use that string as input for another stream that the serializer can use. (Very dirty, but it works.)

Second problem is, that when I try to use the same SslStream to write a second request, I do not get a response from the Reader. (The server DOES send a valid XML response though!) So the serializer.Serialize(xmlWriter, c3) works, but reading from the stream yields no results. I have tried several different classes that implement Stream. (StreamReader, XmlTextReader, etc.)

Anyone has an idea how reading and writing XML data to and from an SslStream is supposed to work?

Thanks in advance!

© Stack Overflow or respective owner

Related posts about c#

Related posts about xml-serialization