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/ .

Tutorial Netduino Parte 6


 Netduino es una plataforma de desarrollo de código abierto integrado similar al Arduino, excepto que utiliza .NET Micro Framework para la programación.  La placa de desarrollo Netduino tiene el mismo factor que Arduino Uno, y por lo tanto la mayoría de los escudos de Arduino son también compatibles con Netduino.  Las placas de desarrollo Arduino se basan en 8 bits microcontroladores Atmel que corren a una velocidad máxima de reloj de 16 MHz en su versión primera. Por otra parte, el hardware Netduino usa potentes procesadores de 32 bits (en el caso de la primera versión un  Atmel SAM7x en Netduino, y STMicro STM32F4 en versiones Netduino Plus) y funciona a una velocidad mucho más rápida (48 MHz a 168 MHz).

El  siguiente tutorial  extraidos de http://embedded-lab.com/blog    tienen como objetivo proporcionar una amplia introducción a la plataforma Netduino  y asegurar que cualquier principiante, estudiante o aficionado, será rápidamente capaz de empezar a usarlo para sus propios proyectos y diseños embebidos. En todos los ejemplos se usa una placa  Netduino Plus ( es la versión mas antigua con NETMF 4,1) se utiliza para ilustrar la salida en estos experimentos.

Como continuación del curso básico de Netduino  donde se trataba de  escribir en una tarjeta SD ,  aprendido a escribir en una tarjeta SD,como ya habrán experimentado, con el fin de ver lo que se ha escrito, tenemos que salir de la SD y luego conectarlo a un ordenador, lo que obviamente no es muy conveniente todo el tiempo. Así, en este tutorial vamos a leer un archivo de texto (mismo archivo / información que escribimos en tutorial anterior ) y enviar el texto a un ordenador. Nuestra comunicación entre la tarjeta SD y Netduino ordenador se establece mediante la comunicación serie mediante USB al dispositivo UART TTL. Por lo tanto, la información será transferida a una computadora en un puerto Component Object Model (COM).

Hay dos grandes partes de este tutorial; primera lectura de los datos de la tarjeta SD y enviarla a un ordenador, la segunda una aplicación escuchando a un puerto COM para recuperar los datos. Además de estos, en este tutorial vamos a tocar después de grandes objetos:

  • Comunicación en serie
  • InterruptPort
  • EventHandler (Nativo y SerialDataReceived)
  • StreamReader

Configuración de Circuito y Teoría

Desde el equipo que estoy usando no tiene un puerto serie (la mayor parte del equipo en estos días no tienen uno) por lo que un UART USB (Universal Asíncrono receptor-transmisor) adaptador (comprado aquí ) se utiliza lo que nos permite enviar serial datos a un ordenador a través de un USB.

Netduino soporta de forma nativa UART RX y TX en los pines digitales 0 y 1 pins. Así, el pasador de 0 Netduino va a RXD y el pin 1 está conectado a TXD del dispositivo USB-UART. Cuando la información se envía desde Netduino al dispositivo USB UART, necesitamos una aplicación informática para aprovechar esa información desde el puerto COM. Con el fin de recibir dicha información escribí una herramienta COM Talk.

COM Talk (Aplicación Informática)

Vamos a crear una aplicación que puede recibir información de los puertos COM. También he añadido algunas funciones para que pueda enviar información a través del puerto COM seleccionado, sin embargo, no vamos a discutir en esa parte. No voy a entrar en detalles acerca de cómo funciona esta herramienta, ya que es más cosas .NET (que la programación de microcontroladores). Esta aplicación se puede utilizar para recibir información sobre cualquier puerto COM para que no se limita a este tutorial. Es así como la interfaz de usuario de esta herramienta se parece.

La sección de entrada de COM Talk mostrará la información recibida en el puerto COM seleccionado. Internamente, bytes recibidos se convierten en cadena y se muestra. La sección de salida permite enviar información al puerto COM. Esta sección no se utiliza en el tutorial. Necesitamos tener esta herramienta en marcha cada vez que queremos para recibir datos en un puerto COM.
Aquí está todo el código relacionado con esta OCM Talk.

 

public static void Log(params object[] strings)
{
    string message = string.Empty;
    for (int i = 0; i < strings.Length; i++)
    {
        message = message + strings[i].ToString() + " ";
    }
    WriteLog(message, StreamWriter, PrefixDateTime, LogToFile );
}

Uno de los argumentos utilizados es StreamWriter que es una propiedad y se crea una nueva instancia de StreamWriter cuando llamó por primera vez.

private static StreamWriter StreamWriter
{
    get
    {
        if (_streamWriter == null) _streamWriter = new StreamWriter(LogFilePath,(bool)Append);
        return _streamWriter;
    }
}

El método WriteLog, primero se añade la marca de tiempo si es necesario y luego llama al método WriteLine de un escritor corriente. Tenga en cuenta que Netduino no tiene reloj interno así que el tiempo registrado por Netduino no será la misma que la hora del reloj.

private static void WriteLog(string message, StreamWriter streamWriter, bool addDateTime, bool logToFile)
{
    if (addDateTime)
    {
        DateTime current = DateTime.Now;
        message = "[" + current + ":" + current.Millisecond + "] " + message;
    }
 
    Debug.Print(message);
    if (logToFile) streamWriter.WriteLine(message);
}

 

Salida

 

Utilización de la clase SerialPort pudimos enviar los datos al COM1 de Netduino llamando al método Write. Y el programa independiente COM Talk fue capaz de mostrar fielmente los datos entrantes a un puerto COM.

He aquí un pequeño vídeo de enviar datos desde Netduino a la computadora.

Descargar

C # .NET Code (Solución de archivos)

Fuente  aqui