Este proceso es factible cuando requerimos utilizar herramientas con un framework superior a 2.0.

Lo primero es crear un Servicio Web (Web Service) y crear un metodo que acepte httpGet en nuestro proyecto web con framework 3.5 o superior.

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public bool MetodoWeb
{
//Aqui va tu codigo
}

Se tiene que asegurar que exista el siguiente Nodo en el archivo Web.Config

 

Ahora si, dentro de nuestro codigo de Framework 2.0, en donde especificamos la ruta de nuestro Servicio Web, el nombre del metodo y los parametros que le vamos a enviar.

string wsRuta = string.Empty;
string wsServicio = string.Empty;
string wsMetodo = string.Empty;

wsRuta = “http:/localhost:8023”;
wsServicio = “ServicioWeb.asmx”;
wsMetodo = “MetodoWeb”;
string hola = string.Format(“{0}/{1}/{2}”, wsRuta, wsServicio, wsMetodo);
var request = (HttpWebRequest)WebRequest.Create(string.Format(“{0}/{1}/{2}”, wsRuta, wsServicio, wsMetodo));

StringBuilder sbs = new StringBuilder();
sbs.Append(string.Format(“{0}={1}”, “Parametro1”, “Valor1”));
sbs.Append(string.Format(“&{0}={1}”, “Paramtero2”, “Valor2”));
var data = Encoding.ASCII.GetBytes(sbs.ToString());

request.Method = “POST”;
request.ContentType = “application/x-www-form-urlencoded”;
request.ContentLength = data.Length;

using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
try
{
var response = (HttpWebResponse)request.GetResponse();

var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
}
catch (WebException wex)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(“ERROR:” + wex.Message + “. STATUS: ” + wex.Status.ToString());

if (wex.Status == WebExceptionStatus.ProtocolError)
{
var response = ((HttpWebResponse)wex.Response);
sb.AppendLine(string.Format(“Status Code : {0}”, response.StatusCode));
sb.AppendLine(string.Format(“Status Description : {0}”, response.StatusDescription));

try
{
StreamReader reader = new StreamReader(response.GetResponseStream());
sb.AppendLine(reader.ReadToEnd());
}
catch (WebException ex) { throw; }
}

throw new Exception(sb.ToString(), wex);
}

Cuando se detecta algun problema en el codigo, el sistema regresa por default un error 500, por lo cual se agrego el Catch de “WebException “, en donde se despliega de manera mas entendible el error y poder atacarlo mas efectivamente.

Con esto, no tuvimos que agregar la referencia web en nuestro proyecto y pudimos consumir el Web Service por un POST.

-MrDonPh0x

hqdefault

Advertisements