RPC ciąg dalszy

No i po sprawie. Jak się okazało polecenie brzmiało strasznie, a rzeczywistość okazała się prosta. Z pomocą przyszła mi „biblioteka” (nie wiem czy można to tak nazwać) Incutio XML-RPC.

Jej obsługa nie powinna przysporzyć problemu nikomu, kto choć trochę zna PHP.  Programy klienta i serwera są niesamowicie proste

Przykładowy program serwera:


< ?php

include('ixr.inc.php');

function sayHello($args) {
    return 'Dzien dobry!';
}
function addThreeNumbers($args) {
    $number1 = $args&#91;0&#93;;
    $number2 = $args&#91;1&#93;;
    $number3 = $args&#91;2&#93;;
    return $number1 + $number2 + $number3;
}
$server = new IXR_Server(array(
    'test.przywitanie' => 'sayHello',
    'test.dodaj' => 'addThreeNumbers'
));

?>

Oraz klienta:


< ?php

include "ixr.inc.php";

$client = new IXR_Client("http://serwer/~sciezka/server.php");

if($_GET&#91;"arg1"&#93; != NULL && $_GET&#91;"arg2"&#93; != NULL) {
    $a = $_GET&#91;"arg1"&#93;;
    $b = $_GET&#91;"arg2"&#93;;
    $c = $_GET&#91;"arg3"&#93;;
    if(!$client->query("test.dodaj", $a, $b, $c))
    {
        die("Blad zapytania RPC!");
    }

    echo $a."+".$b."+".$c."=".$client->getResponse();
}

if($_GET["hello"] != NULL) {
    if(!$client->query("test.przywitanie") )
        die("Blad zapytania RPC!");
    echo $client->getResponse();
}
?>

<form method="GET" action="client.php">
Liczba 1: <input type="text" name="arg1"/>
Liczba 2: <input type="text" name="arg2"/>
Liczba 3: <input type="text" name="arg3"/>
<input type="submit" value="  Dodaj  "/>

</form><form method="GET" action="client.php">
<input type="submit" value="Przywitaj sie" name="hello"/>
</form>


Oba przyklady sa zmodyfikowanymi przykladami ze strony, do której link podałem powyżej. Klient jest nieco bardziej rozbudowany tak, aby można było samemu podawać liczby lub zlecać przywitanie się.

Początkowo nie wiedziałem w ogóle w jaki sposób można zrealizować RPC z pomocą HTTP, PHP i XML. Teraz kiedy już dowiedziałem się w jaki sposób to zrobić, nawet implementacja jakiegoś prostego systemu realizującego to zadanie nie sprawiłaby większej trudności. Najtrudniejsze, są zawsze najprostsze rozwiązania…. ech…

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s