To invoke a POST method located at a particular URL with an XML request message, we need to follow the below steps:
- Create a request to the url
- Put required request headers
- Convert the request XML message to a stream (or bytes)
- Write the stream of bytes (our request xml) to the request stream
- Get the response and read the response as a string
This looks much easier when seen in code. Keep reading…..
So, the code for the above steps looks something like this:
string xmlMessage = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n" +
"construct your xml request message as required by that method along with parameters";
string url = "http://XXXX.YYYY/ZZZZ/ABCD.aspx";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
byte requestInFormOfBytes = System.Text.Encoding.ASCII.GetBytes(xmlMessage);
request.Method = "POST";
request.ContentType = "text/xml;charset=utf-8";
request.ContentLength = requestInFormOfBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(requestBytes, 0, requestInFormOfBytes.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader respStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
string receivedResponse = respStream.ReadToEnd();
If the xmlMessage is formed correctly, then you should be getting the expected response from the web method located at the URL.
Hope this helps!