Python >> Usando XML-RPC con Python

XML-RPC es un protocolo de llamada de procedimiento remoto que usa XML para codificar los datos y HTTP como protocolo de transmisión de mensajes. XML-RPC nos permite crear nuestro propio WebService para intercambiar datos entre aplicaciones. Para este ejemplo vamos a crear un sencillo WebService donde un cliente enviará una cantidad en euros y el servidor convertirá esta cantidad a dolares devolviéndosela al cliente.

Empezaremos definiendo el código del servidor:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#-----------------------------------------------------------------------------
# Incluimos los módulos necesarios.
#----------------------------------------------------------------------------
import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer


# Definimos la función que convierte la cantidad de euros en dólares.
def convert_euro_to_dollar(euros):
        # 1.00 EUR      =       1.28225 USD
        # 2013-03-30 15:28 UTC
        return euros * 1.28225

# Abrimos el servidor para que acepte peticiones.
server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."

# Registramos la función que hemos definido.
server.register_function(convert_euro_to_dollar, "euro_to_dollar")
server.serve_forever()

Como vemos el código es muy sencillo y legible en comparación a otros lenguajes de programación donde la misma tarea puede ser más engorrosa. El código del cliente es igual de sencillo:


# !/usr/bin/env python
# -*- coding: utf-8 -*-

#-----------------------------------------------------------------------------
# Incluimos los módulos necesarios.
#----------------------------------------------------------------------------
import xmlrpclib


try:
        # Leemos desde teclado la cantidad que se quiere convertir.
        euros = int(raw_input('Introduzca la cantidad en euros (EUR): '))
        # Conectamos con el servidor e invocamos a la función.
        proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
        print "Cantidad en dólares (USD): %s" % str(proxy.euro_to_dollar(euros))

except ValueError:
        # Si la cantidad introducida no es válida finalizamos la ejecuc
ión.
        print 'Cantidad incorrecta'

Una vez tenemos los dos ficheros preparados, ejecutamos el código del servidor y a continuación el código del cliente, y veremos como se realiza la conversión correctamente.

El código completo está disponible en mi Github.

Etiquetado , , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: