Ciao a tutti... sto affrontando sto problema da 2 giorni e 2 notti ed ho già un pochino di mal di testa... perchè come sempre non riesco a trovare documentazione fatta per chi non sa
Leggendo un bel PDF di Gaetano Giunta ho più o meno capito le basi, ma su alcune cose rimango veramente a zero.
Mi pare di aver capito che il metodo più facile di realizzazione di un web service è XML-RPC o JSON (consigliato ques'ultimo per la leggerezza)
Essendo a zero non so decidermi bene tra i pro ed i contro, ma guardando i file di esempio del PDF si mostrava come realizzare un sistema multiprotocollo. Il tutto si riferisce a delle librerie che ho preso da qui:

http://sourceforge.net/projects/phpxmlrpc

Facendo un po' di lettura sono arrivato a creare questo codice per il SERVICE che chiamo service.php
Codice PHP:
<?php
  
include('include/xmlrpc.inc');
  include(
'include/xmlrpcs.inc');

  
$methods = array(
    
'USstatename' => array('function' => 'findstate',
                     
'signature' => array(array($xmlrpcString,$xmlrpcInt)), 
                
'docstring' => 'Converts an integer value to its US state name' 
              
)
                  );

  function 
findstate($msg){
    
// funzionalità da implementare...
    
return "ciao - ".$msg;
  }

  if(
$_SERVER['REQUEST_METHOD'] != 'POST' ||  $_SERVER['CONTENT_TYPE'] == 'application/x-www-form-urlencoded'){
   include(
'include/docxmlrpcs.inc');
   
$server = new documenting_xmlrpc_server($methods);
  }else{
   if 
strpos($_SERVER['CONTENT_TYPE'], 'text/xml') === 0){
    
$server = new xmlrpc_server($methods);
   }else{
    include(
'include/jsonrpc.inc'); 
    include(
'include/jsonrpcs.inc');
    
$server = new jsonrpc_server($methods);
   }
  }

?>
e per il CLIENT client.php
Codice PHP:
<?php
 
include("include/xmlrpc.inc");

 
$par = new xmlrpcval('system.methodHelp''string');
 
$msg = new xmlrpcmsg('system.methodHelp', array($par));

 
$c = new xmlrpc_client("/service.php""http://localhost/sito_cms_akkattp/prova_web_service/server"80);
 
$r $c->send($msg);
 if(!
$r->faultCode()){
  
$v $r->value();
  
$result $v->scalarval(); // non funzionerebbe con array!
  
print "Got: " htmlspecialchars($result);
 }else{
  print 
"Si &egrave; verificato un errore:
"
;
  print 
" Codice: " htmlspecialchars($r->faultCode())."
"
;
  print 
" Ragione: " htmlspecialchars($r->faultString());
 }
?>
Ora come sempre qualcosa non mi torna perchè il nome della funzione sul server sul client non la vedo, e quindi mi aspetto un errore, ma come ho detto prima a volte non si arriva a pensare quanto siamo ignoranti noi!
:master:

Ovviamente l'errore c'è... ed eccolo:

codice:
Si è verificato un errore:
Codice: 5
Reragione: Connect error: Unable to find the socket transport "http" - did you forget to enable it when you configured PHP? (-881083704)

Continuando la lettura vedo che c'è un debugger in dotazione... lo provo sapendo quindi che isolo il client e testo solo il service (spero che il debugger non abbia bug! ) e dopo avere messo tutti i parametri di connessione (come da esempio) mi ritrovo sto errore:

codice:
List of available methods on server http://localhost/sito_cms_akkattp/pr...80/service.php ...
XMLRPC call FAILED!

Fault code: [5] Reason: 'Connect error: php_network_getaddresses: getaddrinfo failed: Name or service not known (0)'
03/Sep/2009:21:02:44
Guardo bene e l'indirizzo viene formato male... che paxxe allora tolgo il numero della porta (tanto l'80 è di default) e ricevo questo messaggio:

codice:
List of available methods on server http://localhost/sito_cms_akkattp/pr...ce/service.php ...
XMLRPC call FAILED!

Fault code: [5] Reason: 'Connect error: php_network_getaddresses: getaddrinfo failed: Name or service not known (0)'
03/Sep/2009:21:05:17
identico...

Per non dilungarmi io vorrei ottenere come risultato il ritorno di un parametro legato al "ciao" della funzione del web service. Qualcuno mi sa dare un aiutino?
GRAZIE