Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144

    xmlrpc leggere le risposte. qualcuno mi aiuta?

    Buonasera a tutti. Devo interfacciarmi con un booking engine che utilizza questo metodo per gestire le chiamate.

    Non avendolo mai visto e non conoscendo bene la programmazione a oggetti sto trovando qualche difficoltà.

    In teoria devo ottenere il token e da li faccio partire la chiamata:

    Codice PHP:
    $server = new xmlrpc_client('https://wubook.net/xrws');
    $args= array( new xmlrpcval($config->getWbUsername(), 'string'),
    new
    xmlrpcval($config->getWbPassword(), 'string'),
    new
    xmlrpcval($config->getWbPkey(), 'string'));
    $message = new xmlrpcmsg('acquire_token', $args);
    $struct = $server->send($message)->value();
    //$res= $struct->arraymem(0);
    //$token= $struct->arraymem(1);
    var_dump($struct);
    for (
    $i = 0; $i < $struct->arraySize(); $i++)
    {
    $v = $struct->arrayMem($i);
    $token= $v->scalarVal();
    }

    echo
    $token."<hr>";


    In questo modo sono riuscito a "pulire" e ottenere il token in modo da far partire la chiamata per ottenere le prenotazioni:

    Codice PHP:
    $args= array(new xmlrpcval($token, 'string'),new xmlrpcval('11111111', 'int'));
    $message = new xmlrpcmsg('fetch_rooms', $args);
    $struct2 = $server->send($message)->value();



    a questo punto dentro struct2 ho la risposta ma non so come leggerla e lavorarla.

    Qualcuno mi aiuta?

    Grazie mille

  2. #2
    Codice PHP:

    var_dump
    ($struct2); 
    almeno vediamo cos'è $struct2
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3

    Sei andato avanti?

    Quote Originariamente inviata da lorenzo84 Visualizza il messaggio
    Codice PHP:
    $server = new xmlrpc_client('https://wubook.net/xrws');
    $args= array( new xmlrpcval($config->getWbUsername(), 'string'),
    new
    xmlrpcval($config->getWbPassword(), 'string'),
    new
    xmlrpcval($config->getWbPkey(), 'string'));
    $message = new xmlrpcmsg('acquire_token', $args);
    $struct = $server->send($message)->value();
    //$res= $struct->arraymem(0);
    //$token= $struct->arraymem(1);
    var_dump($struct);
    for (
    $i = 0; $i < $struct->arraySize(); $i++)
    {
    $v = $struct->arrayMem($i);
    $token= $v->scalarVal();
    }

    echo
    $token."<hr>";
    Ciao lorenzo84, sei riuscito ad andare avanti? Ho provato ad eseguire questo codice ma mi risulta l'errore: <<Fatal error: Call to a member function getWbUsername() on a non-object in...>>

    Grazie
    ---------------------------
    danielix05

  4. #4
    $config sembra un oggetto di lorenzo usato per passare la configurazione. sostituisci le chiaamte a $config con i tuoi valori e riprova
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5

    Grazie Santino83_02

    Grazie Santino,
    mi hai fatto notare davvero una cosa molto importante.

    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    $config sembra un oggetto di lorenzo usato per passare la configurazione. sostituisci le chiaamte a $config con i tuoi valori e riprova
    Ok ora ottengo questo codice:
    codice:
    object(PhpXmlRpc\Value)#11 (3) {
      ["me"]=>
      array(1) {
        ["array"]=>
        array(2) {
          [0]=>
          object(PhpXmlRpc\Value)#9 (3) {
            ["me"]=>
            array(1) {
              ["int"]=>
              int(0)
            }
            ["mytype"]=>
            int(1)
            ["_php_class"]=>
            NULL
          }
          [1]=>
          object(PhpXmlRpc\Value)#10 (3) {
            ["me"]=>
            array(1) {
              ["string"]=>
              string(15) "1236479895.8969"
            }
            ["mytype"]=>
            int(1)
            ["_php_class"]=>
            NULL
          }
        }
      }
      ["mytype"]=>
      int(2)
      ["_php_class"]=>
      NULL
    }
    1236479895.8969<hr>

    come posso visualizzarlo in xml?
    Dovrei ottenere qualcosa di questo genere. o sono propriu fuori strada?
    Scusa ma è la prima volta che uso questo protocollo.

    ​grazie.

    codice:
    <methodResponse>
      <params>
        <param>
          <value>
            <array>
              <data>
                <value>
                  <int>0</int>
                </value>
                <value>
                  <string>9869117656.9552</string>
                </value>
              </data>
            </array>
          </value>
        </param>
      </params>
    </methodResponse>
    ---------------------------
    danielix05

  6. #6
    Quote Originariamente inviata da danielix05 Visualizza il messaggio
    Scusa ma è la prima volta che uso questo protocollo.
    mai usato xml rpc io in nessun linguaggio.

    Cmq non capisco la domanda: stai usando php da "proxy" verso un altro xmlrpc server? perchè dovresti tornare la risposta in xml?

    Cmq non so che libreria state utilizzando, ma se fosse questa: http://gggeek.github.io/phpxmlrpc/do...Rpc/Value.html direi che il metodo serialize richiamato sull'oggetto che hai ottenuto dalla chiamata possa aiutarti di molto. credo almeno. Ma quello che hai postato era il dump di cosa? perchè il metodo send del client dovrebbe tornare un oggetto "Response" http://gggeek.github.io/phpxmlrpc/do.../Response.html il cui metodo "serialize" dovrebbe aiutarti ad ottenere l'xml che chiedi
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7

    Molto prezioso!

    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    mai usato xml rpc io in nessun linguaggio.
    Cmq non capisco la domanda: stai usando php da "proxy" verso un altro xmlrpc server? perchè dovresti tornare la risposta in xml?
    sto implementando un channel manager che, in base al metodo indicato, da una risposta in xml. Prenderei quella risposta per memorizzare sul mio db, per esempio, le prenotazioni ottenute su un portale turistico terzo.

    Ora con il metodo serialize ho ottenuto questo
    codice:
    <value>
    <array>
    <data>
    <value>
    <int>0</int>
    
    </value>
    
    
    <value>
    <string>2692829718.8084</string>
    
    </value>
    
    
    
    </data>
    
    
    
    </array>
    
    
    
    </value>
    


    la guida del sistema che sto seguendo mi dice che dovrebbe essere così


    codice:
    <methodResponse>
      <params>
        <param>
          <value>
            <array>
              <data>
                <value>
                  <int>0</int>
                </value>
                <value>
                  <string>9869117656.9552</string>
                </value>
              </data>
            </array>
          </value>
        </param>
      </params>
    </methodResponse>
    che dici è sufficiente?
    ---------------------------
    danielix05

  8. #8
    Codice PHP:

    $response 
    $server->send(...);

    if(!
    is_array($response))
    {
      
    $response = [$response];
    }

    $methodResponse "<methodResponse><params>";
    foreach(
    $response as $param)
    {
        
    $methodResponse .= "<param>".$param->serialize()."</param>";
    }
    $methodResponse .="</params></methodResponse>";


    //setto gli header della risposta corretti
    //stampo l'xml 
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Ciao lorenzo84, leggo solo ora il tuo post. Sei poi riuscito ad andare avanti in questo progetto?

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Sono passati due anni.
    Ti conviene mandargli un messaggio privato, così se torna sul forum gli appare un pop-up di notifica e saprà sicuramente del messaggio.

    Chiudo perché tirare su post vecchi non è consentito.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.