La herramienta xmlrpc_call es un pequeño programa de terminal de Unix para
acceder a los servicios básicos XML-RPC usando una shell de unix. Ésta es
muy útil para descubrir la funcionalidad del demonio XML-RPC de OGo (o otros
demonios XML-RPC).
La herramienta es parte del paquete SOPE.
Nota: Asegúrese que ha cargado el entorno OGo antes de llamar a xmlrpc_call,
de otro modo la shell nunca encontrará la herramienta ni las librerías requeridas
por la herramienta.
Sourcing el entorno SKYRiX:
|
source /opt/opengroupware.org/OpenGroupware.org.sh
|
|
Uso
La herramienta se llama pasando la URL del servidor que quieres acceder.
Si no se especifica un método, la herramienta hará una consulta al
servidor para obtener una lista de métodos implementados (usando las
características de system.listMethods).
|
xmlrpc_call <url> [<method-name>] [<arg1>,...]
|
|
Primero un ejemplo para acceder aun servicio web XML-RPC público:
Meerkat. Para listar los métodos que Meerkat ofrece:
helge@dogbert:~> xmlrpc_call \
http://www.oreillynet.com/meerkat/xml-rpc/server.php
meerkat.getChannels
meerkat.getCategories
meerkat.getCategoriesBySubstring
meerkat.getChannelsByCategory
meerkat.getChannelsBySubstring
meerkat.getItems
system.listMethods
system.methodHelp
system.methodSignature
|
|
Para acceder a un método del servidor:
helge@dogbert:~> xmlrpc_call \
http://www.oreillynet.com/meerkat/xml-rpc/server.php \
meerkat.getChannelsBySubstring \
"XML.com"
title=XML News from PerlXML.com
id=718
title=XML.com
id=47
title=XML.com Cover Page
id=5016
title=XML.com Resource Guide
id=4637
|
|
Actualmente no puede llamar a los servicios, los cuales requieren un parámetro
escrito puesto que solo puede pasar strings en la shell. (debe ser mejorado)
Fíjense que la mayoría de métodos XML-RPC que son especificados para recibir un
integer pueden también recibir una string (se detectará la string y se forzará a
número), así que no es un gran problema en la práctica.
Accediendo al Demonio OGo
La única diferencia con Meerkat es, que el demonio OGo te pedirá el usuario y la
contraseña y que tiene 10 veces más métodos.
Para ejecutar una consulta de los métodos disponibles:
helge@dogbert:~> xmlrpc_call http://localhost:20000/RPC2
login: helge
password:
account.update
project.isdir
appointment.getById
project.fetchJobs
appointment.update
person.fetchJobs
...
enterprise.getByNumber
|
|
Puede tambien entubar la salida a través de sort, para una mejor visión general
(solo añade "| sort" a la llamada Unix).
Para obtener los atributos del usuario 'root' (el cual siempre tiene ID 10000):
helge@dogbert:~> xmlrpc_call http://localhost:20000/RPC2 person.getById 10000
login: helge
password:
02_tel
03_tel_funk
05_tel_private
10_fax
15_fax_private
addresses=number=LS10000
email2
extendedAttrs=lastChanged=2002-12-27 15:03:01 +0100
extendedKeys=email1
id=skyrix://dogbert.in.skyrix.com:80/Sx_dogbert/10000
isComplete=1
isPrivate=0
job_title
login=root
name=root
nickname=Administrator
objectVersion=1
other_title1
other_title2
phoneTypes=01_tel
phones=isAccount=1
|
|
Accediendo a servidores a través de un Firewall / Proxy
Si utiliza un servidor proxy, necesita configurar algunos parámetros por defecto
para que xmlrpc_call pueda conectar al servicio web público:
Defaults write NSGlobalDomain WOProxy \
'"http://proxy:8080"'
|
|
Puede configurar dominios sin proxy usando WONoProxySuffixes:
Defaults write NSGlobalDOmain WONoProxySuffixes \
'(.mycompany.de, localhost)'
|
|