Use the following procedure to invoke a POST method located at a specific URL with an XML request message:
1. Create a request to the URL
2. Put required request headers
3. Convert the request XML message to a stream (or bytes)
4. Write the stream of bytes (our request XML) to the request stream
5. 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 preceding procedure looks something like this:
namespace HttpPostRequestDemo
{
class Program
{
static void Main(string[] args)
{
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);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader respStream = new StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);
string receivedResponse = respStream.ReadToEnd();
Console.WriteLine(receivedResponse);
respStream.Close();
response.Close();
}
}
}
If the xmlMessage is formed correctly, then you should be getting the expected response from the web method located at the URL.
I hope this helps!