How to use XMLSerializer to post to a https url
- I have XML generated using the helper class generated by using XSD.EXE against a schema.
I can serialize the xml successfully to a file using:
XmlSerializer ser = new XmlSerializer(typeof(MessageType));
TextWriter w = new StreamWriter(@"c:\ss.xml");
ser.Serialize(w, msg);
w.Close();
What I need to do is POST this (it's not SOAP) to an https url. Then I need to retrieve the response and decode it using the helper classes.
I looked at MSDN documentation for the XmlSerializer but it discusses SOAP.
This ought to be really simple - but I can't find a code example.
Anyone have a sample?
Thanks!
Answers
- Go look at the HttpWebRequest class.
John Saunders
WCF is Web Services. They are not two separate things.
Use WCF for All New Web Service Development, instead of legacy ASMX or obsolete WSE
Use File->New Project to create Web Service Projects
- Proposed As Answer byAmadeo Casas - MSFTModeratorTuesday, November 03, 2009 5:09 PM
- Marked As Answer byAmadeo Casas - MSFTModeratorTuesday, November 03, 2009 7:51 PM
- Here's some working code. I'll ask a separate question, however, in a minute:
WebRequest req = WebRequest.Create("https://myurl");
req.Method = "POST";
req.ContentType = "text/xml";
Stream dataStream = req.GetRequestStream();
ser.Serialize(dataStream, msg);
dataStream.Close();
WebResponse response = req.GetResponse();
status = ((HttpWebResponse)response).StatusDescription;
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
// Read the content.
MessageType rsp = new MessageType();
XmlSerializer serr = new XmlSerializer(typeof(MessageType));
rsp = (MessageType)serr.Deserialize(reader);
reader.Close();
- Marked As Answer byThaneHubbell Wednesday, November 04, 2009 5:56 PM
All Replies
- Go look at the HttpWebRequest class.
John Saunders
WCF is Web Services. They are not two separate things.
Use WCF for All New Web Service Development, instead of legacy ASMX or obsolete WSE
Use File->New Project to create Web Service Projects
- Proposed As Answer byAmadeo Casas - MSFTModeratorTuesday, November 03, 2009 5:09 PM
- Marked As Answer byAmadeo Casas - MSFTModeratorTuesday, November 03, 2009 7:51 PM
- Thanks John,
That's the right answer I think. Getting the response back into something I can use with the helper classes is also a challenge. Once I get the service to return some XML then I'll see if I am putting it in the right place. I'll post my code after it works in hopes that will assist others.- Marked As Answer byAmadeo Casas - MSFTModeratorTuesday, November 03, 2009 7:51 PM
- Unmarked As Answer byAmadeo Casas - MSFTModeratorTuesday, November 03, 2009 7:51 PM
- Here's some working code. I'll ask a separate question, however, in a minute:
WebRequest req = WebRequest.Create("https://myurl");
req.Method = "POST";
req.ContentType = "text/xml";
Stream dataStream = req.GetRequestStream();
ser.Serialize(dataStream, msg);
dataStream.Close();
WebResponse response = req.GetResponse();
status = ((HttpWebResponse)response).StatusDescription;
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
// Read the content.
MessageType rsp = new MessageType();
XmlSerializer serr = new XmlSerializer(typeof(MessageType));
rsp = (MessageType)serr.Deserialize(reader);
reader.Close();
- Marked As Answer byThaneHubbell Wednesday, November 04, 2009 5:56 PM
- FYI, you need a few using blocks:
WebRequest req = WebRequest.Create("https://myurl");
req.Method = "POST";
req.ContentType = "text/xml";
using (Stream dataStream = req.GetRequestStream())
{
XmlSerializer ser = new XmlSerializer(typeof (MessageType));
ser.Serialize(dataStream, msg);
}
using (WebResponse response = req.GetResponse())
{
string status = ((HttpWebResponse) response).StatusDescription;
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
XmlSerializer serr = new XmlSerializer(typeof (MessageType));
MessageType rsp = (MessageType) serr.Deserialize(reader);
}
}
}
John Saunders
WCF is Web Services. They are not two separate things.
Use WCF for All New Web Service Development, instead of legacy ASMX or obsolete WSE
Use File->New Project to create Web Service Projects


