Utilizando HttpLib para consumir servicios web en c#


Mientras que C # ofrece muchas maneras para que los programadores puedan consumir  servicios web con relativa facilidad, la escritura asíncrona requiere mucho más esfuerzo para poner en práctica  el envio de peticiones http.

Windows Communication Framework es una gran herramienta para la comunicación cliente / servidor reltivamente  nueva, pero a  pesar de esto  es frecunte tener que escribir un montón de código para utilizar las API existentes. Para lograr esto, se pueden utilizar las librerias   WebClient o HttpWebRequest en C #, sin embargo estas bibliotecas que Microsoft proporciona son con frecuencia demasiado complejos para usos más simples.

HttpLib que podemos descargar   en   Codeproject,  permite  que sea mucho más fácil consumir de forma asíncrona  datos de servicios web en C #.

Esta nueva biblioteca contiene métodos para subir archivos al servidor y obtener páginas declarandolas en una sola línea, en lugar de 30 líneas necesarias para utilizar HttpWebRequest .

Para usar esta biblioteca   los usuarios deberían estar familiarizados con los métodos GET, POST, y tipos de peticiones web similares antes de usar esta biblioteca, aunque gracias al trabajo del programador que ha diseñado esta libreria  no es necesario un amplio conocimiento.

Obtener una página web

Este método asíncrono consigue de forma asíncrona una página web y pasa el resultado en una expresión lambda.

  Request.GET ("http://codeproject.com/", 
 resultado =>
 {
     Console.Write (resultado);
 });

POSTeando datos a servicios web

Los datos pueden ser enviados a los servicios web de una manera similar. Los parámetros pueden ser pasados ​​en un objeto anónimo que posteriormente se serializa en el cuerpo de la petición.

  Request.Post ("http: //testing.local/post.php", new {name = "James", username = "Redslide"}, 
 resultado =>
 {
     Console.Write (resultado);
 });

Carga de archivos al servidor.

La biblioteca facilita la carga de archivos codificados en forma de varias /. FileStreams se pueden copiar en la solicitud Web como se muestra a continuación. El uso de una corriente permite la biblioteca para utilizar en aplicaciones de Silverlight para cargar una ImageStream directamente desde la cámara.

  Request.Upload ("http: //testing.local/post.php", new {nombre = "valor"},
 new [] {new NamedFileStream ("file", "photo.jpg", "image / jpeg", 
              new FileStream (@ "C: \ photo.jpg", FileMode.Open))}, 
 resultado =>
 {
     Console.Write (resultado);
 });

Puntos de interés

Anonymous serialización de objetos

Objetos anónimos se serializan con la reflexión. Una lista de todas las propiedades de un objeto se puede obtener utilizando GetProperties() . Esto permite que el serializador de recorrer y obtener todos los valores requeridos.

foreach (var property in Parameters.GetType().GetProperties())
{
    string name = property.Name
    string value = property.GetValue(Parameters, null).ToString();
}

Esta biblioteca tiene ahora fuente de Windows Store compatibles y binarios disponibles – en las actualizaciones de detalles y explicaciones en  el blog de  su creador http://jthorne.co.uk/blog/category/httplib

HttpLib se puede descargar desde el sitio CodePlex en http://httplib.codeplex.com/ .