Come utilizzare un WSDL


126

Ho bisogno di utilizzare un servizio Web. Mi hanno inviato il file WSDL. Cosa devo fare per aggiungerlo al mio sito Web e iniziare a usarlo come proxy. (Se lo metto in una directory virtuale può essere scoperto, ma mi garantisce la connessione con il servizio web reale?)


9
Bene, ho votato positivamente perché è una domanda a cui penso che altri utenti qui trarrebbero vantaggio dal vedere una risposta. Stavo cercando esattamente questo problema e sono felice di averlo trovato qui.
schizoid04

Risposte:


138

Vorrei avviare Visual Studio, creare un progetto web (o un'app console, non importa).

Per .Net Standard:

  1. Farei clic con il pulsante destro del mouse sul progetto e scegliere "Aggiungi riferimento al servizio" dal menu contestuale Aggiungi .
  2. Farei clic su Avanzate, quindi su Aggiungi riferimento al servizio.
  3. Vorrei ottenere il percorso completo del file del wsdl e incollarlo nella barra degli indirizzi. Quindi spara la freccia (pulsante vai).
  4. Se si verifica un errore durante il tentativo di caricare il file, deve esserci un URL non funzionante e non risolto che il file deve risolvere come mostrato di seguito: inserisci qui la descrizione dell'immagine Fare riferimento a questa risposta per informazioni su come risolvere: Risposta di Stackoverflow a: Impossibile creare il riferimento del servizio per wsdl file

Se non ci sono errori, devi semplicemente impostare il NameSpace che desideri utilizzare per accedere al servizio e verrà generato per te.

Per .Net Core

  1. Farei clic con il pulsante destro del mouse sul progetto e selezionare Servizio connesso dal menu di scelta rapida Aggiungi.
  2. Selezionare il provider di riferimento del servizio Web Microsoft WCF dall'elenco.
  3. Vorrei premere sfoglia e selezionare subito il file wsdl, impostare lo spazio dei nomi e sono a posto. Fare riferimento all'URL di correzione degli errori sopra se si verifica un errore.

Uno qualsiasi dei metodi precedenti genererà un client WCF semplice e molto semplice da utilizzare. Dovresti trovare una classe "YourservicenameClient" nel codice generato.

A scopo di riferimento, il file cs generato può essere trovato nel tuo Obj / debug (o versione) / XsdGeneratedCode e puoi ancora trovare le dll nella cartella TempPE.

I Servizi creati dovrebbero avere metodi per ciascuno dei metodi definiti nel contratto WSDL.

Istanziare il client e chiamare i metodi che si desidera chiamare: questo è tutto!

YourServiceClient client = new YourServiceClient();
client.SayHello("World!");

Se è necessario specificare l'URL remoto (non utilizzando quello creato per impostazione predefinita), è possibile farlo facilmente nel costruttore del client proxy:

YourServiceClient client = new YourServiceClient("configName", "remoteURL");

dove configNameè il nome dell'endpoint da utilizzare (utilizzerai tutte le impostazioni tranne l'URL), e remoteURLè una stringa che rappresenta l'URL a cui connettersi (invece di quello contenuto nella configurazione).


Funziona bene. Solo una domanda, se ho il file wsdl sulla mia macchina e aggiungo il riferimento a questo file. Quando si esegue l'URL che colpisce è quello che ospita il servizio web o devo specificare Binding e EndPoint?
jmayor

1
Dipende da te: per impostazione predefinita, il codice creato per il proxy client avrà l'URL contenuto all'interno del WSDL - se devi andare a un altro URL, devi specificarlo tu stesso.
marc_s

Perché è così facile? Non c'è un problema? : p Grazie!
Odys

1
Come risposta accettata, sarebbe opportuno menzionare anche come utilizzare un WSDL ospitato sul Web anche da un URL.
Caltor

Penso di essere abbastanza vicino a farlo funzionare. Ho installato il servizio Web utilizzando lo strumento Aggiungi riferimento al servizio. Sono in grado di istanziare il client, ma la chiamata ai metodi è dove fallisco. Il punto finale sta utilizzando un'implementazione Java e tutto quello che posso vedere è l'XML. Il metodo che sto tentando di chiamare sta cercando un clientid e "qualcos'altro". Quel qualcos'altro è una classe. Il che è sconcertante. Posso metterlo in un post qui sotto se ciò può aiutare, ma sono sconcertato.
mappingman

45

In visual studio.

  • Crea o apri un progetto.
  • Fare clic con il pulsante destro del mouse sul progetto da Esplora soluzioni.
  • Seleziona "Aggiungi riferimento al servizio"
  • Incolla l'indirizzo con WSDL che hai ricevuto.
  • Fare clic su OK.

Se non ci sono errori, dovresti essere in grado di vedere il riferimento al servizio nel browser degli oggetti e tutti i metodi correlati.


9
<3 Visual Studio .. Sì, è davvero così semplice :)
cwap

3
L'OP non ha un indirizzo ma un file.
Henk Holterman

1
Il provider del servizio Web potrebbe aver disabilitato WSDL (security by obscurity), quindi non esiste un URL in cui è possibile accedere a WSDL e quindi l'aggiunta di un riferimento Web in VS non funzionerà. Tuttavia, il provider vuole che tu (intendo OP) sappia tutto ciò che devi sapere sul contratto di servizio, ecco perché hanno inviato il file WSDL. Ora l'OP deve generare il codice proxy da esso, la domanda è come.
azheglov

3
Digitando il percorso del file. Cosa ti fa pensare che non funzioni?
John Saunders

1
Ciao @vidalsasoon. Potresti spiegare brevemente come faccio a usare queste classi che vedo nel mio esploratore di classe. ?
CalZone

16

Utilizzare l'utilità WSDL.EXE per generare un proxy del servizio Web da WSDL.

Otterrai un lungo file sorgente C # che contiene una classe simile a questa:

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="MyService", Namespace="http://myservice.com/myservice")]
public partial class MyService : System.Web.Services.Protocols.SoapHttpClientProtocol {
    ...
}

Nel codice lato client, che consuma servizi Web:

  1. istanzia MyService.
  2. impostare la sua proprietà Url
  3. invocare metodi Web

5
Questo crea un servizio
Web

7

Se si desidera aggiungere il riferimento wsdl nel progetto .Net Core , non è disponibile l'opzione "Aggiungi riferimento Web".

Per aggiungere il riferimento wsdl, andare in Esplora soluzioni, fare clic con il pulsante destro del mouse sull'elemento del progetto Riferimenti e quindi fare clic sull'opzione Aggiungi servizio connesso .

inserisci qui la descrizione dell'immagine

Quindi fare clic su "Riferimento servizio Web Microsoft WCF":

inserisci qui la descrizione dell'immagine

Immettere il percorso del file nella casella di testo URI e importare il WSDL:

inserisci qui la descrizione dell'immagine

Genererà un client WCF semplice e molto semplice e tu lo userai in questo modo:

YourServiceClient client = new YourServiceClient();
client.DoSomething();

Questa estensione non mi sembra.
Rafael Pizao
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.