using System;
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
using System.Xml.XPath;
public class CallSoap {
private const string soapNS = "http://schemas.xmlsoap.org/soap/envelope/";
private const string yourNS = "http://yourName.com";
private static readonly Encoding encoding = Encoding.UTF8;
public static void Main(string [] args) {
MemoryStream stream = new MemoryStream( );
XmlTextWriter writer = new XmlTextWriter(stream,encoding);
writer.WriteStartDocument( );
writer.WriteStartElement("soap","Envelope",soapNS);
writer.WriteStartElement("Body",soapNS);
writer.WriteStartElement("GetNumberInStock",yourNS);
writer.WriteElementString("productCode","1111");
writer.WriteEndElement( );
writer.WriteEndElement( );
writer.WriteEndElement( );
writer.WriteEndDocument( );
writer.Flush( );
stream.Seek(0,SeekOrigin.Begin);
StreamReader reader = new StreamReader(stream);
string soap = reader.ReadToEnd( );
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://127.0.0.1/myQuery.asmx");
request.Method = "POST";
request.ContentType = "text/xml; charset=" + encoding.HeaderName;
request.ContentLength = soap.Length;
request.Headers["SOAPAction"] = "http://Product.com/GetNumberInStock";
StreamWriter streamWriter = new StreamWriter(request.GetRequestStream( ));
streamWriter.Write(soap);
streamWriter.Flush( );
WebResponse response = request.GetResponse( );
Stream responseStream = response.GetResponseStream( );
XPathDocument document = new XPathDocument(responseStream);
XPathNavigator nav = document.CreateNavigator( );
XPathNodeIterator nodes = nav.Select("//Envelope/Body/GetNumberIn/GetNumberInResult");
Console.WriteLine(nodes.Current);
}
}
|