barcamp
TRANSCRIPT
XML-RPC
Como crear un API para tu sitio usando
XML-RPC y PHP
Barcamp 2 - Queretaro
Ren Lpez Caballero
XML-RPC?
Es una especificacion que permite a software corriendo en diferentes SO y ambientes realizar llamadas a procedimientos sobre el internet
Es una llamada a un procedimiento remoto usando HTTP y XML para la codificacion
Quienes lo usan?
Flickr puede usar REST, SOAP, XML-RPC
Wordpress
Movable Type
Weblogs.Com
Llamada XML-RPC
jibberjobber.getContacts
nameJohn
lnameDoe
Tipos de Datos
Struct y Array
name John age 21
12 Egypt 0 -31
Respuestas XML
South Dakota
faultCode 4 faultString Too many parameters.
Libreria
http://phpxmlrpc.sourceforge.net/
Ejemplo Servidor
structMemExists( $key ) ) {$val = $struct->structMem($key);return $val->scalarVal();} else {return false;}}
Continua
function add( $params ) {global $xmlrpcerruser;$struct = $params->getParam(0); $name = getStructValue( $struct, 'name' );// Aqui se prueba si el usuario esta autorizadoif( true ){$struct = array('id' => new xmlrpcval( $id, 'int' ), 'dateCreated' => new xmlrpcval( $data['dateCreated'], 'dateTime.iso8601' ));return new xmlrpcresp( new xmlrpcval( $struct, 'struct' ) );} else { return new xmlrpcresp( 0, $xmlrpcerruser,, "The login failed" );}}
$s = new xmlrpc_server( array("example.add" => array("function" => "add"),) );?>
Ejemplo del cliente
setDebug( 2 );
$struct = array( 'username' => new xmlrpcval('demo', 'string'), 'password' => new xmlrpcval('demo', 'string' ),'name' => new xmlrpcval('John', 'string' ));$message = new xmlrpcmsg( "example.add", array( new xmlrpcval( $struct, 'struct' ) ) );$response = $client->send( $message );
?>
Muokkaa otsikon tekstimuotoa napsauttamalla
Muokkaa jsennyksen tekstimuotoa napsauttamalla
Toinen jsennystaso
Kolmas jsennystaso
Neljs jsennystaso
Viides jsennystaso
Kuudes jsennystaso
Seitsems jsennystaso
Kahdeksas jsennystaso
Yhdekss jsennystaso
EtiquetaTipoEjemplo o Entero de cuatro bytes-120 o 11CadenaHola mundoNumero de punto flotante-12.14Fecha/hora19980717T14:08:55Base 64eW91IGNhbid0IHJlYWQgdGhpcyE=
???Page ??? (???)02/06/2009, 23:47:11Page /