Desrible how to call web service using httpwebreqeust
show how to create request data by serialization
- Step One. Create reqeust by serialization
1. use xsd.exe to create a class file(.cs file)
2. create an object from this class, assign value to the object
3. use SoapFormatter.Serialize to write to a MemoryStream object (in order to use SoapFormatter, maybe need to manually add reference: System.Runtime.Serialization.Fomatter.Soap, XmlSerializer can't be used here)
4. Convert data from MemoryStream to dataArray
sFormatter.Serialize(memoryStream, mo);
memoryStream.Close();
-Step Two. Post Data
// submit http request
WRequest.KeepAlive =
WRequest.ContentType =
WRequest.Method =
WRequest.ContentLength = postData.Length;
WRequest.Headers.Add(
stream.Write(postData, 0, postData.Length);
stream.Close();
HttpWebRequest WRequest = (HttpWebRequest)WebRequest.Create(urlString);true;"text/xml";"POST";"SOAPAction", "http://www.informatel.net/img/MessageData");Stream stream = WRequest.GetRequestStream();// receive the response
HttpWebResponse WResponse = (HttpWebResponse)WRequest.GetResponse();
Stream receiveStream = WResponse.GetResponseStream();Encoding encode = System.Text.Encoding.GetEncoding("utf-8");// Pipes the stream to a higher level stream reader with the required encoding format.
StreamReader readStream = new StreamReader(receiveStream, encode);string result = readStream.ReadToEnd();
MemoryStream memoryStream = new MemoryStream (); SoapFormatter sFormatter = new SoapFormatter (); byte [] postData = memoryStream.ToArray();