miércoles, 20 de julio de 2011

LLamada a un metodo XML-RPC

XML-RPC es un protocolo desarrollado por Microsoft en conjunto con un ingeniero (no recuerdo el nombre) de la empresa UserLand Software a fines de los 90, ocupa XML como medio de codificación de datos y el protocolo http para la transmisión de mensajes, si bien es un protocolo simple y muy básico en cuanto a funcionalidades es la base de lo conocemos actualmente como SOAP. La invocación de estos servicios no es una tarea compleja pero debido a la escasa literatura que existe respecto a este tema he decidido dar un ejemplo de su implementación esperando que a más de a uno lo ayude.

Para llevar a cabo la invocación se necesita lo siguiente:

1) la Dirección Web en donde está alojado el servicio a llamar (url).

2) El XML con los parámetros de entrada y las especificaciones del método(xmlparam).

El XML tiene la siguiente estructura

<?xml version="1.0"?>
<methodCall>
<methodName>Nombre metodo</methodName>
<params>
<param>
<value><i4>valor</i4></value>
</param>
</params>
</methodCall>

Sabiendo esto la llamada la hacemos de la siguiente forma:

public string LLamadaXMLRPC(string url, string xmlparam)

{

WebRequest webRequest = WebRequest.Create(url);

webRequest.ContentType = "application/x-www-form-urlencoded";

webRequest.Method = "POST";

byte[] bytes = Encoding.ASCII.GetBytes(xmlparam);

Stream os = null;

try

{ // send the Post

webRequest.ContentLength = bytes.Length; //Count bytes to send

os = webRequest.GetRequestStream();

os.Write(bytes, 0, bytes.Length); //Send it

}

catch (WebException ex)

{

//

}

finally

{

if (os != null)

{

os.Close();

}

}

try

{ // get the response

WebResponse webResponse = webRequest.GetResponse();

if (webResponse == null)

{ return null; }

StreamReader sr = new StreamReader(webResponse.GetResponseStream());

return sr.ReadToEnd().Trim();

}

catch (WebException ex)

{

//

}

return null;

}

Al ver el código se darán cuenta que la llamada es a través de un POST y tiene como propiedad "application/x-www-form-urlencoded", esto tiene como función codificar todos los caracteres antes de que sean enviados.

martes, 19 de julio de 2011

Nuevamente escribiendo

Hace casi 2 años que no me doy el tiempo de escribir algunas palabras con el solo fin de compartir mis ideas o entregar conocimiento, ésta practica si bien era esporádica me relajaba, me permitía descargar esas emociones contenidas y sentir que se las gritaba al mundo. Por otro lado cuando escribía cosas técnicas sentía que realmente estaba enseñando lo que yo deseaba enseñar y no lo que me imponían enseñar, y aquí estoy nuevamente poniendo mis dedos en un teclado para transmitir lo que me de la gana y esperar ser un aporte al que lee. Este blog lo cree el 2006 y con suerte escribí en él, es más apenas me recordaba que lo tenía fue Google plus el que me lo recordó desde ahora pretendo ocuparlo como mí espacio para hacer todo lo que mencioné anteriormente, aclarado este primer post en mucho tiempo es de un descargo que espero que mas de un chileno comparta conmigo

No es la forma de gobernar el pasar por encima de las decisiones de un congreso, que pena que nuestro presidente al cual siempre apoyé cometa este tipo de errores y que no diferencie que no siempre la legalidad es amiga de la moralidad, que pena también por los miembros del TC que se creen superiores a los elegidos por el pueblo, eliminemos el congreso ya que con esta forma de gobernar está realmente de más, que aprueben las leyes los del TC y que nuestro presidente tome decisiones de forma unilateral. Que pena por todas las mujeres profesionales en donde incluyo a mi esposa que no podrá disfrutar de un postnatal parejo para todas las chilenas, espero que el país no se haga el sordo y demuestre su descontento, aunque por lo que hemos visto estas últimas semanas muy poco le interesa al gobierno la opinión de la ciudadanía.