Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23

    SOAP client e complex types

    Salve,
    non riesco a dialogare con un webservice SOAP via client PHP.
    La funzione $client->__getFunctions() mi torna queste funzioni:
    codice:
    Array ( [0] => opMyFuncResponse opMyFunc(opMyFunc $parameters) )
    mentre la funzione $client->__getTypes() mi torna questi tipi:
    codice:
    Array ( 
    [0] => struct ComplexInput { string VAR1; string VAR2; } 
    [1] => struct ComplexOutput { string VAR3; string VAR4; } 
    [2] => struct opMyFunc { ComplexInput ReqServ; } 
    [3] => struct opMyFuncResponse { ComplexOutput RespServ; } 
    )
    Non riesco bene a capire come strutturare i parametri complex types da passare al server soap, se uso:
    codice:
    $params = array('ReqServ' => array('VAR1' => '0', 'VAR2' => '0'));
    $result = $client->opMyFunc($params);
    Non sembra funzionare (la chiamata al wsdl funziona).
    Non riesco a capire dove ho sbagliato.

    Grazie a chi può darmi una mano.

  2. #2
    probabilmente devi passare un oggetto ReqServ, non un array...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23
    grazie della risposta Santino83_02.
    sono riuscito a far funzionare la chiamata.

    Dal momento che il WS risponde sempre con un oggetto e non con un array, riesco a stamapre l'esito con print_r ma non posso utilizzare il risultato come fosse una stringa.

    Sai per caso come si estrapolano le variabili dalla classe di risposta?

  4. #4
    Originariamente inviato da lemming
    grazie della risposta Santino83_02.
    sono riuscito a far funzionare la chiamata.

    Dal momento che il WS risponde sempre con un oggetto e non con un array, riesco a stamapre l'esito con print_r ma non posso utilizzare il risultato come fosse una stringa.

    Sai per caso come si estrapolano le variabili dalla classe di risposta?
    se la risposta è un oggetto di nome Oggetto con i campi campo1 e campo2 (vedere wsdl), per legegre la risposta basta che fai

    Codice PHP:

    $oggetto 
    $client->opMyFunc(....);

    echo 
    $oggetto->campo1
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23
    Funziona.
    tuttavia le variabili stanno dentro un oggetto che a sua volta sta dentro l'oggetto di ritorno perciò ho dovuto istanziare 2 variabili per tirarle fuori:
    codice:
    $esito = $client->opMyFunc($params);
    $esito2string = $esito->RespServ;
    echo $esito2string->VAR3;
    Si può fare con una sola istruzione (tipo un array bidimensionale arr[n][n]) ?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    23

    SOAP client e complex types [Risolto]

    mi rispondo da solo, bastano 2 frecce:
    $esito->RespServ->VAR3;


    grazie x il supporto

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.