Created
July 6, 2018 12:04
-
-
Save hesenger/c99e8db5931a0c65d022343e8c2d5a81 to your computer and use it in GitHub Desktop.
Consome um webservice no padrão WSDL sem necessidade de referência no VS.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.IO; | |
public class WebService | |
{ | |
public string Url { get; set; } | |
public string MethodName { get; set; } | |
public Dictionary<string, string> Params = new Dictionary<string, string>(); | |
public XDocument ResultXML; | |
public string ResultString; | |
public WebService() | |
{ | |
} | |
public WebService(string url, string methodName) | |
{ | |
Url = url; | |
MethodName = methodName; | |
} | |
/// <summary> | |
/// Invokes service | |
/// </summary> | |
public void Invoke() | |
{ | |
Invoke(true); | |
} | |
/// <summary> | |
/// Invokes service | |
/// </summary> | |
/// <param name="encode">Added parameters will encode? (default: true)</param> | |
public void Invoke(bool encode) | |
{ | |
string 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>"; | |
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Url); | |
req.Headers.Add("SOAPAction", "\"http://tempuri.org/" + MethodName + "\""); | |
req.ContentType = "text/xml;charset=\"utf-8\""; | |
req.Accept = "text/xml"; | |
req.Method = "POST"; | |
using (Stream stm = req.GetRequestStream()) | |
{ | |
string postValues = ""; | |
foreach (var param in Params) | |
{ | |
if (encode) | |
postValues += string.Format("<{0}>{1}</{0}>", HttpUtility.UrlEncode(param.Key), HttpUtility.UrlEncode(param.Value)); | |
else | |
postValues += string.Format("<{0}>{1}</{0}>", param.Key, param.Value); | |
} | |
soapStr = string.Format(soapStr, MethodName, postValues); | |
using (StreamWriter stmw = new StreamWriter(stm)) | |
{ | |
stmw.Write(soapStr); | |
} | |
} | |
using (StreamReader responseReader = new StreamReader(req.GetResponse().GetResponseStream())) | |
{ | |
string result = responseReader.ReadToEnd(); | |
ResultXML = XDocument.Parse(result); | |
ResultString = result; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment