title: Programmatically call webmethods in C#
body: <p>I'm trying to write a function that can call a webmethod from a webserive given the method's name and URL of the webservice. I've found some code on a blog that does this just fine except for one detail. It requires that the request XML be provided as well. The goal here is to get the request XML template from the webservice itself. I'm sure this is possible somehow because I can see both the request and response XML templates if I access a webservice's URL in my browser.</p>
  
  <p>This is the code which calls the webmethod programmatically:</p>
  
  <pre><code>XmlDocument doc = new XmlDocument();
  //this is the problem. I need to get this automatically
  doc.Load("../../request.xml"); 
  HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://localhost/dummyws/dummyws.asmx?op=HelloWorld");
  req.ContentType = "text/xml;charset=\"utf-8\"";
  req.Accept = "text/xml";
  req.Method = "POST";
  Stream stm = req.GetRequestStream();
  doc.Save(stm);
  stm.Close();
  WebResponse resp = req.GetResponse();
  stm = resp.GetResponseStream();
  StreamReader r = new StreamReader(stm);
  Console.WriteLine(r.ReadToEnd());
  </code></pre>