Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: XML-RPC - client PHP - server PYTHON
Forum PHP.pl > Forum > PHP
tabbi
Witam,

postawilem serwer xml-rpc na localhoscie i niestety nie potrafie sie do niego odwolac

czy ktos zna sposob jak polaczyc sie z serwerem xml-rpc postawionym w pythonie

  1. from SimpleXMLRPCServer import SimpleXMLRPCServer
  2. from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler
  3.  
  4. # Restrict to a particular path.
  5. class RequestHandler(SimpleXMLRPCRequestHandler):
  6. rpc_paths = ('/RPC2',)
  7.  
  8. # Create server
  9. server = SimpleXMLRPCServer(("my.public.local", 8500),
  10. requestHandler=RequestHandler)
  11. server.register_introspection_functions()
  12.  
  13. # Register pow() function; this will use the value of
  14. # pow.__name__ as the name, which is just 'pow'.
  15.  
  16. # Register a function under a different name
  17. def adder_function(x):
  18. return x
  19. server.register_function(adder_function, 'add')
  20.  
  21. # Run the server's main loop
  22. server.serve_forever()
  23.  



KLIENT w php

  1. <?php
  2. require 'xmlrpc.inc';
  3.  
  4. $server = new xmlrpc_client("/RPC2", "my.public.local", 8500);
  5. $x = 2;
  6.  
  7. $message = new xmlrpcmsg('add', array(new xmlrpcval($x, 'int')));
  8.  
  9. $result = $server->send($message);
  10.  
  11. // Process the response.
  12. if (!$result)
  13. {
  14. //$exist = FALSE; // Zerujemy $user
  15. }
  16. elseif ($result->faultCode())
  17. {
  18. print "<p>XML-RPC Fault #" . $result->faultCode() . ": " .
  19. print $result->faultString();
  20. }
  21. else
  22. {
  23. echo $struct = $result->value();
  24.  
  25. echo $var = $sumval->scalarval();
  26. }
  27.  
  28. ?>
  29.  


Wywala blad po wywoladniu skryptu klienta: Błąd HTTP 500 (Internal Server Error):
probuje nawiazac polaczenie z my.public.local:8000 korzystajac z methody add przekazuje w array liczby i odpowiedz ze brak odpowiedzi ?
by_ikar
Nie bardzo znam się na pythonie i na tym serwerze, ale z tego co widzę po kodzie, masz coś takiego:

Kod
"localhost", 8000


co w sumie dla mnie znaczy host/port, a ty łączysz się z:

Kod
my.public.local:8000


dlaczego z takim adresem się łączysz, a nie tym podanym w ustawieniach serwera (wstrzykiwanych do konstruktora) ?
tabbi
OKi problem polegał na innym typie otrzymywanych danych od serwera w pythonie.

Obiekt nieco różni się od standardowego obiektu PHP jaki się otrzymuje po żądaniu. Trzeba było printować i dopasować odpowiedź.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.