Example #1
0
        /// <summary>
        /// Invokes service
        /// </summary>
        /// <param name="encode">Added parameters will encode? (default: true)</param>
        public void Invoke(bool encode)
        {
            SoapStr =
                @"<?xml version=""1.0"" encoding=""utf-8""?>
              <soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
                 xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
                 xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
                 <soap:Body>
                     <{0} xmlns=""http://tempuri.org/"">
                      {1}
                    </{0}>
                 </soap:Body>
              </soap:Envelope>";

            var req = (HttpWebRequest)WebRequest.Create(Url);

            req.Headers.Add("SOAPAction", "\"http://tempuri.org/" + MethodName.Trim() + "\"");
            req.ContentType = "text/xml;charset=\"utf-8\"";
            req.Accept      = "text/xml";
            req.Method      = "POST";

            using (var stm = req.GetRequestStream())
            {
                var postValues = "";
                foreach (var param in Params)
                {
                    if (encode)
                    {
                        postValues += string.Format("<{0}>{1}</{0}>", HttpUtility.UrlEncode(param.Key.Trim()), HttpUtility.UrlEncode(param.Value.Trim()));
                    }
                    else
                    {
                        postValues += string.Format("<{0}>{1}</{0}>", param.Key.Trim(), param.Value.Trim());
                    }
                }

                SoapStr = string.Format(SoapStr, MethodName.Trim(), postValues);
                using (var stmw = new StreamWriter(stm))
                {
                    stmw.Write(SoapStr);
                }
            }

            using (var responseReader = new StreamReader(req.GetResponse().GetResponseStream()))
            {
                var result = responseReader.ReadToEnd();
                ResultXML    = result.StringToXml();
                ResultString = result.Replace("&gt;", "<").Replace("&lt;", ">");
            }
        }