fredag 5 mars 2010

Kom igång med XML-RPC och Loopias API

UPPDATERING: Efter att jag skrivit detta inlägg upptäckte jag att Erik Petterson har skrivit en wrapper-klass till Loopias API så att man slipper tänka på XML-RPC. Du hittar phpLoopia här.

Loopia har släppt ett API som följer XML-RPC-protokollet. Detta är första gången jag använder ett XML-RPC-api, nästan alla web-API:er man stöter på idag är av typen REST. Därför tänkte jag skriva ned en snabb guide till hur man kommer igång med XML-RPC i PHP.

För att komma åt Loopias API så måste du ha ett konto hos Loopia. Om du har det kan du skapa en API-användare under Kontoinställningar > LoopiaAPI.

Vilka metoder som finns i API:t kan du se på https://www.loopia.se/api. Den metod jag tänkte att vi skulle testa är domainIsFree(username,password,domain) som låter oss kontrollera om ett domännamn är ledigt eller upptaget.

XML-RPC är inte inbyggt i PHP som standard så för att skapa en XML-RPC klient måste vi börja med att ladda ned ett bibliotek från phpxmlrpc.sourceforge.net. Ladda ned 3.0.0Beta och packa upp. Filen vi behöver ligger i "lib" katalogen och heter xmlrpc.inc.

include "xmlrpc.inc";

$username = 'användare@loopiaapi';
$password = 'MittHemligaLösenord';

$domain = "kodkodkod.se";

$xmlrpcClient = new xmlrpc_client('RPCSERV','api.loopia.se',443);
$xmlrpcMsg = new xmlrpcmsg('domainIsFree',
                           array(new xmlrpcval($username,'string'),
                                 new xmlrpcval($password,'string'),
                                 new xmlrpcval($domain,'string')));

$xmlrpcResponse = $xmlrpcClient->send($xmlrpcMsg,0,'https');

if (!$xmlrpcResponse->faultCode()) { 
   if ($xmlrpcResponse->value()->scalarVal()=="OK"){
      echo "Domänen ".$domain." är ledig";
   }else if($xmlrpcResponse->value()->scalarVal()=="DOMAIN_OCCUPIED"){
      echo "Domänen ".$domain." är upptagen";
   }else{
      echo "Ett oväntat fel inträffade";
   }
}

Koden är förhoppningsvis självförklarande. Vi skapar ett klientobjekt och vi skapar ett xmlrpc-meddelande (ett anrop till domainIsFree) som vi skickar till servern med klienten. Om vi inte får en felkod till svar så kollar vi om svaret är "OK" eller "DOMAIN_OCCUPIED".

Dokumentationen till XML-RPC for PHP hittar du här.

Om du bygger något med Loopias API har du just nu chansen att vinna en iPad.

3 kommentarer:

  1. Jag tänkte bara att tipsa om phpLoopia (http://github.com/ptz0n/phpLoopia) som är en wrapperklass för LoopiaAPI och gör samtliga metoder tillgängliga direkt som funktioner i PHP.

    Ladda ner och prova direkt!
    http://github.com/ptz0n/phpLoopia/archives/master

    SvaraRadera
  2. Ah, såg att du skrivit om den på buzz men missade kommentaren här, la till länk i inlägget också :) Snyggt jobbat!

    SvaraRadera
  3. Vaa? Använder folk "Buzz"?

    Bra tips ang loopia API, ska se om vi kan låta våra medlemmar på http://www.domainz.se importera sina domäner till oss genom API:et :)

    MVH Fredrik

    SvaraRadera