Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    WEB SERVICE XML-RPC e JSON

    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
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  2. #2
    Mi correggo l'indirizzo anche con la porta è giusto... vedo ora... cmq non funziona!
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.