Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [C#] SOAP e Web Server

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103

    [C#] SOAP e Web Server

    Salve a tutti,
    ho un problema nel capire la logica dei messaggi SOAP: ho dato un'occhiata a un po' di guide ma sul mio punto non ho ricevuto chiarimenti.

    La domanda è la seguente: io, client, invio messaggi SOAP ad un WebServer rispettando le specifiche del WSDL ma, essendo stato definito il binding del servizio a me interessato come input and output, mi aspetto giustamente un messaggio SOAP di ritorno:che struttura devo creare, da parte client, per ricevere la risposta del WebServer?
    Devo fare un polling al WebServer finchè non ricevo risposta oppure è tutto compito del WebServer? E nell'ultimo caso, come me ne accorgo che l'ho ricevuto?

    Grazie
    Marco

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Il client di un Web Service viene creato automaticamente dall'ambiente di sviluppo, che genera una classe proxy; la restituzione di valori si ottiene se il metodo del servizio che viene invocato lo prevede.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Concordo in pieno con quanto mi dici ma non risolvo il problema: io accedo ad un Webserver già creato da qualcuno e nel WSDL del Webserver a cui mi collego viene previsto il messaggio di risposta (output)...quello che chiedo io è come mi accorgo che mi è arrivato il SOAP di risposta, visto che so già da ora che mi arriverà dopo giorni dalla mia richiesta di servizio.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da htiman2008
    Concordo in pieno con quanto mi dici ma non risolvo il problema: io accedo ad un Webserver già creato da qualcuno e nel WSDL del Webserver a cui mi collego viene previsto il messaggio di risposta (output)...quello che chiedo io è come mi accorgo che mi è arrivato il SOAP di risposta, visto che so già da ora che mi arriverà dopo giorni dalla mia richiesta di servizio.
    Quando invochi un metodo, non appena il controllo ritorna al tuo programma ciò significa che la richiesta (cioè l'invocazione del metodo) si è conclusa, e pertanto puoi esaminare i parametri di ritorno, se previsti dal metodo.

    Nel tuo caso, se ti arriva un responso dopo un giorno, non capisco con cosa stai lavorando di preciso o come sia strutturato il tuo sistema software.

    Quando si invoca il metodo di un WS, avviene il colloquio. Tempo di passare i parametri e ottenere il responso, e la chiamata si è conclusa. Non ci vogliono giorni, ma istanti. Se è previsto un parametro di ritorno nel metodo, te lo ritrovi. Se non è previsto e devi ottenere in qualche modo il responso riguardo "qualcosa" in generale, probabilmente c'è un altro metodo da richiamare per farlo; quale sia questo metodo lo devi chiedere a chi ha progettato il WS.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Toglimi una curiosità: ti faccio vedere una parte del WSDL vorrei capire se ho inteso correttamente:

    <messagge> a
    <part>
    </part>
    <messagge>

    <message> b
    <part>
    </part>
    <messagge>

    ......
    <portType ......>
    <operation name="alfabeto">
    <input message="tns:a">
    </input>
    <output name="tns:b">
    </output>
    </operation>
    </portType>


    secondo questa specifica tu mi dici che una volta che io chiamo il metodo "a", inevitabilmente io ricevo "b" come risposta dopo qualche istante: giusto?

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da htiman2008
    secondo questa specifica tu mi dici che una volta che io chiamo il metodo "a", inevitabilmente io ricevo "b" come risposta dopo qualche istante: giusto?
    Direi di sì, ma non dovresti aver bisogno di determinarlo "a mano": la classe proxy generata dall'ambiente di sviluppo dovrebbe prevederlo già automaticamente.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    Per creare un messaggio SOAP con un body particolare, ho pensato di usare le strutture messe a disposizione di System.XML, forse esiste un modo più corretto per ottenerlo?

    Un'ultima cosa: una volta ottenuto il messaggio SOAP come si fa a spedire questo messaggio invocando una funzione post di un webserver il cui url è a me noto?
    Esistono esempi clarificatori?

    Grazie

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da htiman2008
    Per creare un messaggio SOAP con un body particolare, ho pensato di usare le strutture messe a disposizione di System.XML, forse esiste un modo più corretto per ottenerlo?
    Un'ultima cosa: una volta ottenuto il messaggio SOAP come si fa a spedire questo messaggio invocando una funzione post di un webserver il cui url è a me noto?
    Esistono esempi clarificatori?
    Non capisco perché vuoi eseguire manualmente tutte le operazioni che la classe proxy creata da Visual Studio per l'interrogazione di un Web Service effettua in modo del tutto automatico.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    103
    In realtà non riesco a capire una cosa:
    se io devo creare un messaggio SOAP di questo tipo:

    <SOAP-ENV:body>
    <m: xxx xmlns:m ="/Webservices/....">
    <aa> 111 </aa>
    <bb> 222 </bb>
    </m:xxx>

    e spedirlo ad un indirizzo http://.....

    non riesco proprio a capire come creare, anche solo a livello di codice come tu dici, questo messaggio facendo fare il resto alla classe proxy e poi spedirlo all'indirizzo voluto.
    Inoltre dove inserisco l'indirizzo del Web service a cui il messaggio deve essere spedito?

    Grazie

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Devi aggiungere un Web Reference (Riferimento Web) alla tua applicazione, fornire il percorso da cui scaricare la definizione WSDL del servizio; l'ambiente di sviluppo creerà per te una "classe proxy" composta ad un metodo per ciascun metodo del servizio.

    Invocare il metodo dell'oggetto equivarrà ad invocare il metodo del servizio, passando semplicemente i parametri necessari come per qualsiasi altro metodo, rendendo del tutto trasparente la comunicazione con il WS.

    Non c'è alcun bisogno - a meno di non dover gestire casi specifici o particolari - di gestire manualmente l'invio di richieste e l'interpretazione dei responsi in formato SOAP.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.