Cum se utilizează un WSDL (Programare, C#, Servicii Web, Wsdl)

jmayor a intrebat.

Trebuie să consum un serviciu web. Mi-au trimis fișierul WSDL. Ce ar trebui să fac pentru a-l adăuga la site-ul meu și să încep să-l folosesc ca proxy.( Dacă îl pun pe un Director Virtual poate fi descoperit, dar îmi acordă conexiunea cu serviciul web real).

Comentarii

  • Ei bine, am dat upvoted pentru că este o întrebare la care cred că și alți utilizatori de aici ar fi bine să vadă un răspuns. Eu căutam exact această problemă și mă bucur că am găsit-o aici. –  > Por schizoid04.
4 răspunsuri
marc_s

Aș porni Visual Studio, aș crea un proiect web (sau o aplicație de consolă – nu contează).

Pentru .Net Standard:

  1. Aș face clic dreapta pe proiect și aș alege „Add Service Reference” din fereastra de selectare. Adăugați meniul contextual.
  2. Aș face clic pe „Advanced”, apoi pe „Add Service Reference”.
  3. Aș obține calea completă a fișierului wsdl și l-aș lipi în bara de adrese. Apoi, aruncați săgeata (butonul „go”).
  4. Dacă există o eroare în încercarea de a încărca fișierul, atunci trebuie să existe o adresă url spartă și nerezolvată pe care fișierul trebuie să o rezolve, așa cum se arată mai jos: Consultați acest răspuns pentru informații despre cum se poate rezolva: Răspunsul Stackoverflow la: Nu se poate crea o referință de serviciu pentru fișierul wsdl

Dacă nu există nicio eroare, trebuie să setați pur și simplu spațiul de nume pe care doriți să îl utilizați pentru a accesa serviciul și acesta va fi generat pentru dumneavoastră.

Pentru .Net Core

  1. Aș face clic dreapta pe proiect și aș alege Connected Service din meniul contextual Add.
  2. Aș selecta Microsoft WCF Web Service Reference Provider din listă.
  3. Aș apăsa pe browse și aș selecta imediat fișierul wsdl, aș seta namespace-ul și sunt gata de plecare. Consultați url-ul de remediere a erorilor de mai sus dacă întâmpinați vreo eroare.

Oricare dintre metodele de mai sus va genera un client WCF simplu, foarte simplu, pe care îl puteți utiliza. Ar trebui să găsiți o clasă „YourservicenameClient” în codul generat.

În scop de referință, fișierul cs generat poate fi găsit în fișierul Obj/debug(or release)/XsdGeneratedCode și puteți găsi în continuare dll-urile în folderul TempPE.

Serviciul (serviciile) creat(e) ar trebui să aibă metode pentru fiecare dintre metodele definite în contractul WSDL.

Instanțiați clientul și apelați metodele pe care doriți să le apelați – asta e tot!

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

Dacă aveți nevoie să specificați URL-ul la distanță (nu îl utilizați pe cel creat în mod implicit), puteți face acest lucru cu ușurință în constructorul clientului proxy:

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

unde configName este numele punctului final care trebuie utilizat (veți utiliza toate setările, cu excepția URL-ului), iar opțiunea remoteURL este un șir de caractere care reprezintă URL-ul la care trebuie să se conecteze (în loc de cel conținut în config).

Comentarii

  • Acest lucru funcționează bine. O singură întrebare, dacă am fișierul wsdl pe mașina mea și adaug referința la acest fișier. Când execut Url-ul pe care îl accesează este cel care găzduiește serviciul web, sau trebuie să specific Binding-ul și EndPoint-ul? –  > Por jmayor.
  • Depinde de dumneavoastră – în mod implicit, codul creat pentru proxy-ul clientului va avea URL-ul conținut în WSDL – dacă aveți nevoie să ajungeți la un alt URL, trebuie să îl specificați dumneavoastră. –  > Por marc_s.
  • De ce este atât de ușor? Nu există o capcană? :p Mulțumesc! –  > Por Odys.
  • Ca răspuns acceptat ar fi bine dacă ați menționa și cum se poate folosi un WSDL găzduit pe web de la o adresă URL. –  > Por Caltor.
  • Cred că sunt destul de aproape de a reuși să fac acest lucru să funcționeze. Am instalat serviciul web folosind instrumentul Add Service Reference. Pot să instanțez clientul, dar nu reușesc să apelez metodele. Punctul final utilizează o implementare Java și tot ce pot vedea este XML. Metoda pe care încerc să o apelez caută un clientd și „altceva”. Acel „altceva” este o clasă. Ceea ce este derutant. Pot pune acest lucru într-un mesaj mai jos, dacă acest lucru ar ajuta, dar sunt nedumerit. –  > Por mappingman.
vidalsasoon

În studioul vizual.

  • Creați sau deschideți un proiect.
  • Faceți clic dreapta pe proiect din exploratorul de soluții.
  • Selectați „Add service refernce”
  • Lipiți adresa cu WSDL pe care ați primit-o.
  • Faceți clic pe OK.

Dacă nu apar erori, ar trebui să puteți vedea referința serviciului în browserul de obiecte și toate metodele aferente.

Comentarii

  • <3 Visual Studio.. Da, este chiar atât de simplu 🙂 –  > Por cwap.
  • OP nu are o adresă, ci un fișier. –  > Por Henk Holterman.
  • Este posibil ca furnizorul serviciului Web să fi dezactivat WSDL (securitate prin obscuritate), astfel încât nu există o adresă URL unde WSDL poate fi accesat și atunci adăugarea unei referințe Web în VS nu va funcționa. Cu toate acestea, furnizorul dorește ca TU (mă refer la OP) să știi tot ce trebuie să știi despre contractul de servicii, de aceea a trimis fișierul WSDL. Acum, OP trebuie să genereze codul proxy din acesta, întrebarea este cum. –  > Por azheglov.
  • Prin tastarea căii de acces la fișier. Ce te face să crezi că asta nu funcționează? –  > Por John Saunders.
  • Bună ziua @vidalsasoon. Ai putea să-mi explici pe scurt cum să folosesc aceste clase pe care le văd în exploratorul de clase. ? –  > Por CalZone.
azheglov

Utilizați Utilitarul WSDL.EXE pentru a genera un proxy de serviciu web din WSDL.

Veți obține un fișier sursă C# lung care conține o clasă care arată astfel:

/// <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 {
    ...
}

În codul dvs. din partea clientului, care consumă servicii Web:

  1. instanțiați MyService.
  2. setați proprietatea Url a acestuia
  3. invocați metodele Web

Comentarii

  • Acest lucru creează un serviciu web ASMX de tip „vechi” – acestea sunt depășite – în prezent ar trebui să se utilizeze WCF în schimb -.  > Por marc_s.
Nedzad G

Dacă doriți să adăugați o referință wsdl în .Net Core proiect, nu există opțiunea „Add web reference” (Adăugați referință web).

Pentru a adăuga referința wsdl, mergeți la Solution Explorer, faceți clic dreapta pe elementul de proiect References și apoi faceți clic pe opțiunea opțiunea Add Connected Service (Adăugare serviciu conectat).

Apoi faceți clic pe „Microsoft WCF Web Service Reference”:

Introduceți calea fișierului în caseta de text URI și importați WSDL:

Se va genera un client WCF simplu, foarte de bază, iar dvs. îl veți utiliza cam așa:

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

Comentarii

  • Această extensie nu îmi apare. –  > Por Rafael Pizao.