PHP RIXP
Богомил Шопов
OpenFest 2005 Русе

Creative Commons Attribution-ShareAlike 2.5 License
За мен
- име: Богомил Б. Шопов
- Фирма: Нетинфо АД

- "Списание точка ком"

- "ОpenSource Mag"

- blog:http://purplerain.org/nb/
Aз питам ;))
- Какво е РНР?
- Какво е XML-RPC?
Какво е РНР?
- Скриптов език? Да/Не
- Език за генериране на HTML? Да/Не
- Език от страната на сървъра? Да/Не
- Език от страната на клиента? Да/Не
- Идея си нямам! Да
PHP
- История
- Възможности - приложения - десктоп, уеб
- Примери
- PHP/MySQL
Salle споменах MySQL ;)
XML-RPC
- Протокол за извикване на отдалечени процедури
- Използва HTTP за транспортиране
- POST заявка с XML body
- XML-RPC е запазена марка на UserLand Software, Inc
- Измислен е от ...?
XML-RPC Заявка
POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181
<methodCall>
<?xml version=”1.0”?>
<methodName>spisanie.getrank</methodName>
<params>
<param>
<value><string>http://spisanie.com</string></valie>
</param>
</params></methodCall>
XML-RPC Отговор
POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181
<?xml version=”1.0”?>
<methodResponse>
<params>
<param>
<value><string>PageRank: 5</string></valie>
</param>
</params>
</methodResponse>
PHP RIXP
- XML-RPC сървър за разработка и използване на уеб услуги.
-
- Сам или с Apache
-
- Nano-Rixp: Самоинсталиращ се сървър.
-
- Windows, Linux, *BSD, MacOS
-
PHP RIXP
- Използване на услги без нужда от собствена имплементация.
-
- Спестяване на време и на средства.
-
- 10 000 реда код vs. 5 реда
-
- Пример: OIC Whois APS.
-
- Пример: Google Maps project- Ajax- RIXP
-
Интерфейси за достъп
PHP
require('service.php');
$url="spisanie.cc";
$s = XMLRPC_request("localhost:444", "/", "rixp.getmethods", array(XMLRPC_prepare($url)));
print_r($s);
Интерфейси за достъп
Perl
#!/usr/bin/perl -T
use warnings;
use strict;
use RPC::XML::Client;
my $url = 'http://www.google.com/';
my $request = RPC::XML::request->new('rixp.getmethods', RPC::XML::string->new($url));
my $client = RPC::XML::Client->new('http://localhost:444');
my $response = $client->simple_request($request);
print $response;
Интерфейси за достъп
Python
from xmlrpclib import Server
rixpcli = Server("http://localhost:444/")
print rixpcli.rixp.getMethods()
Интерфейси за достъп
Ruby
from xmlrpclib import Server
rixpcli = Server("http://localhost:444/")
print rixpcli.rixp.getMethods()
Интерфейси за достъп
Java
import org.apache.xmlrpc.XmlRpcClient;
import java.util.Vector;
public class rixpclient {
public static void main( String args[] ) throws Exception {
XmlRpcClient client = new XmlRpcClient( "http://localhost:444" );
Vector params = new Vector();
params.addElement("http://spisanie.com");
Object result = client.execute( "rixp.getmethods", params );
if ( result != null )
System.out.println( result );
}
}
Демонстрация?
Информация
- http://rixp.openfmi.net
- bogomil@spisanie.com