Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [PHP5] Error handling su creazione oggetto

    Ciao,

    ho un metodo di un classe in cui vado ad istanziare un oggetto della classe SoapClient.

    Codice PHP:
    public static function initWSDL() {
        
    $obj = new SoapClient(<argomenti>);
        return 
    true

    Vorrei gestire la casistica in cui il WebService, per cui vado a istanziare l'oggetto, non sia raggiungibile e far ritornare FALSE al metodo.

    Adesso se il webservice è irraggiungibile partono due Warnings e un Fatal Error.

    Qual'è il modo migliore per fare un 'return false' in caso di errore?

    Devo per forza impostare un altro 'error_handler'?
    Oppure è più consueto il metodo con la '@' posta prima dell'istruzione?

    Come controllo l'esito dell'operazione, senza far scatenare errori fatali o warnings?

  2. #2
    Nessuno sa come intercettare Errori e Warning quando si tenta di istanziare un oggetto SoapClient?

  3. #3
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  4. #4
    Andava usato
    Codice PHP:
    ..} catch (SoapFault $e) {
    .... 
    invece di

    Codice PHP:
    ..} catch (Exception $e) {
    .... 

    Ad ogni modo non riesco a far funzionare il WebService.
    Ha funzionato fino a l'altro ieri, poi non so cosa posso aver fatto....

    In pratica se faccio
    Codice PHP:
    $webservice = new SoapClient($wsdl);
    $webservice->__getFunctions() 
    mi restituisce correttamente la lista di funzioni.

    Ma se provo a richiamarne una qualunque con
    Codice PHP:
    $webservice = new SoapClient($wsdl);
    $webservice->__getLifetime() 
    mi restituisce
    "Could not connect to host"

    e non si schioda..... qualunque funzione io provi.

    Solo che se non riesce a collegarsi all'host, come fa a restituirmi la lista di funzioni?

    Non riesco ad uscirne!!!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    per aiutarti maggiormente dovremo sapere qual'è il ws a cui intendi collegarti e vedere le api.

    comunque assicurati anche che il ws non abbia problemi al momento.
    sometimes it's just like teaching pigs how to fly

  6. #6
    Originariamente inviato da nickcv
    per aiutarti maggiormente dovremo sapere qual'è il ws a cui intendi collegarti e vedere le api.
    Il collegamento è qui (devo usare snipurl):

    h**p://sn.im/27osu2

    Dal browser è correttamente raggiungibile e utilizzabile.
    Un metodo è per esempio "getLifetimeEnergy()" (senza parametri), che restituisce un numero double.

    comunque assicurati anche che il ws non abbia problemi al momento.
    E' la nostra prima esperienza con i WS ma non credo sia stato sbagliato a programmare.
    Senza passare da PHP funziona perfettamente, ed è raggiungibile dall'esterno.

    Quando invece uso il SoapClient non funziona più.

    La cosa strana è che Martedì funzionava..... poi, mi pare senza modificare niente, ho controllato e non funzionava più.

    Non mi sembra sia cambiato niente ma non posso esserne sicuro.
    Se riuscite a darmi un esempio funzionante (dovrebbero essere 3 istruzione in fila) o dirmi qual'è il problema (che mi si presenta a prescindere dall'hosting che utilizzo per far girare la pagina PHP).

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    visto che è sviluppato da voi non puoi controllare in svn/git se qualcuno ha fatto qualcosa da martedì?
    sometimes it's just like teaching pigs how to fly

  8. #8
    Originariamente inviato da nickcv
    visto che è sviluppato da voi non puoi controllare in svn/git se qualcuno ha fatto qualcosa da martedì?
    Il softwarista non ha usato svn sul webservice

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    e non è ancora stato licenziato? <.<

    comunque quando ho un pò di tempo faccio qualche prova, ma dubito di poterci dare un'occhiata prima di lunedì
    sometimes it's just like teaching pigs how to fly

  10. #10

    [RISOLTO] !!

    Sono riuscito a farlo funzionare!!!

    In pratica l'inizializzazione dell'oggetto non gli piaceva così semplice.
    Non so perché, non chiedetemelo.

    Ma utilizzando l'istanziamento esteso funziona correttamente e non mi dà errori quando richiamo i metodi dell'oggetto!!!

    Qua sotto il codice:
    $wsdl = Configuration::$webserv_hostname . Configuration::$webserv_url;

    WSclass::$obj_wsdl = new SoapClient(NULL,
    array(
    "location" => $wsdl,
    "uri" => "urn:xmethods-delayed-quotes",
    "style" => SOAP_RPC,
    "use" => SOAP_ENCODED
    ));
    Nel mio caso non è un'istanza vera e propria.... praticamente uso il pattern singleton.
    Ad ogni modo la parte importante è quella tra parentesi.
    Anziché specificare come primo parametro il WSDL e successivamente gli argomenti, è meglio non specificare il WSDL (Null) e specificare il parametro 'location'.
    Anche l' 'uri' è fondamentale.

    L'unico amareggiamento è che non capisco perché così funzioni e nell'altro modo (più semplice, immediato e logico) non riesca ad eseguire i metodi.

    Cosa strana oltretutto che a volte funzionava anche col metodo più semplice....

    Comunque tutt'ora continua, ogni tanto, a restituirmi "Could not connet to host".......

    Voi riuscite a capirci più di me?

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.