Cara menggunakan WSDL

126

Saya perlu menggunakan Layanan Web. Mereka mengirimi saya file WSDL. Apa yang harus saya lakukan untuk menambahkannya ke situs web saya dan mulai menggunakannya sebagai proxy. (Jika saya meletakkannya di Direktori Virtual, itu dapat ditemukan, tetapi apakah itu memberi saya koneksi dengan layanan web yang sebenarnya?)

jmayor
sumber
9
Ya, saya memberi suara positif karena ini adalah pertanyaan yang menurut saya akan bermanfaat bagi pengguna lain di sini jika melihat jawabannya. Saya sedang mencari masalah ini dan saya senang saya menemukannya di sini.
schizoid04

Jawaban:

138

Saya akan menjalankan Visual Studio, membuat proyek web (atau aplikasi konsol - tidak masalah).

Untuk .Net Standard:

  1. Saya akan mengklik kanan pada proyek dan memilih "Tambahkan Referensi Layanan" dari menu Tambahkan konteks.
  2. Saya akan mengklik Advanced, lalu klik Add Service Reference.
  3. Saya akan mendapatkan jalur file lengkap dari wsdl dan menempelkannya ke bilah alamat. Kemudian tembak Panah (tombol pergi).
  4. Jika ada kesalahan saat mencoba memuat file, maka harus ada url yang rusak dan tidak terselesaikan yang perlu diselesaikan file seperti yang ditunjukkan di bawah ini: masukkan deskripsi gambar di sini Lihat jawaban ini untuk informasi tentang cara memperbaikinya: Stackoverflow jawaban untuk: Tidak dapat membuat referensi layanan untuk file wsdl

Jika tidak ada kesalahan, Anda cukup mengatur NameSpace yang ingin Anda gunakan untuk mengakses layanan dan itu akan dibuatkan untuk Anda.

Untuk .Net Core

  1. Saya akan mengklik kanan pada proyek dan memilih Layanan Terhubung dari menu Tambahkan konteks.
  2. Saya akan memilih Penyedia Referensi Layanan Web Microsoft WCF dari daftar.
  3. Saya akan menekan telusuri dan memilih file wsdl langsung, Atur namespace dan saya siap melakukannya. Lihat url perbaikan kesalahan di atas jika Anda mengalami kesalahan.

Salah satu metode di atas akan menghasilkan klien WCF yang sederhana dan sangat mendasar untuk Anda gunakan. Anda harus menemukan kelas "YourservicenameClient" dalam kode yang dihasilkan.

Untuk tujuan referensi, file cs yang dihasilkan dapat ditemukan di Obj / debug (atau rilis) / XsdGeneratedCode Anda dan Anda masih dapat menemukan dll di folder TempPE.

Layanan yang dibuat harus memiliki metode untuk masing-masing metode yang ditentukan pada kontrak WSDL.

Instantiate klien dan panggil metode yang ingin Anda panggil - hanya itu yang ada!

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

Jika Anda perlu menentukan URL jarak jauh (tidak menggunakan yang dibuat secara default), Anda dapat dengan mudah melakukan ini di konstruktor klien proxy:

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

di mana configNamenama titik akhir yang akan digunakan (Anda akan menggunakan semua pengaturan kecuali URL), dan remoteURLadalah string yang mewakili URL yang akan disambungkan (bukan yang ada dalam konfigurasi).

marc_s
sumber
Ini bekerja dengan baik. Hanya satu pertanyaan, jika saya memiliki file wsdl di komputer saya, dan saya menambahkan referensi ke file ini. Saat menjalankan Url yang terkena adalah yang menghosting layanan web, atau apakah saya harus menentukan Binding dan Endpoint?
jmayor
1
Terserah Anda - secara default, kode yang dibuat untuk proxy klien akan memiliki URL yang terdapat di dalam WSDL - jika Anda perlu membuka URL lain, Anda harus menentukannya sendiri.
marc_s
Mengapa ini sangat mudah? Apakah tidak ada tangkapan? : p Terima kasih!
Odys
1
Sebagai jawaban yang diterima, alangkah baiknya jika Anda juga menyebutkan cara menggunakan WSDL yang dihosting web dari URL juga.
Caltor
Saya pikir saya cukup dekat untuk membuat ini bekerja. Saya telah menginstal Layanan Web menggunakan alat Tambahkan Referensi Layanan. Saya dapat membuat Instansiasi klien, tetapi memanggil metode adalah tempat saya gagal. Titik akhirnya menggunakan implementasi Java, dan yang bisa saya lihat hanyalah XML. Metode yang saya coba panggil adalah mencari clientid dan "sesuatu yang lain". Sesuatu yang lain adalah kelas. Yang membingungkan. Saya dapat meletakkan ini di posting di bawah ini jika itu akan membantu, tetapi saya bingung.
petugas pemetaan
45

Di studio visual.

  • Buat atau buka proyek.
  • Proyek klik kanan dari penjelajah solusi.
  • Pilih "Tambahkan referensi layanan"
  • Tempel alamat dengan WSDL yang Anda terima.
  • Klik OK.

Jika tidak ada kesalahan, Anda harus bisa melihat referensi layanan di browser objek dan semua metode terkait.

vidalsasoon
sumber
9
<3 Visual Studio .. Ya, sesederhana itu :)
cwap
3
OP tidak memiliki alamat tetapi file.
Henk Holterman
1
Penyedia layanan Web mungkin telah menonaktifkan WSDL (keamanan dengan ketidakjelasan), jadi tidak ada URL di mana WSDL dapat diakses dan kemudian menambahkan referensi Web di VS tidak akan berfungsi. Namun, penyedia ingin ANDA (maksud saya OP) mengetahui semua yang perlu Anda ketahui tentang kontrak layanan, itulah mengapa mereka mengirim file WSDL. Sekarang OP perlu menghasilkan kode proxy darinya, pertanyaannya adalah bagaimana.
azheglov
3
Dengan mengetik di path ke file tersebut. Apa yang membuat Anda berpikir itu tidak berhasil?
John Saunders
1
Hai @vidalsoon. Bisakah Anda menjelaskan secara singkat bagaimana cara saya menggunakan kelas-kelas ini yang saya lihat di penjelajah kelas saya. ?
CalZone
16

Gunakan utilitas WSDL.EXE untuk menghasilkan proxy Layanan Web dari WSDL.

Anda akan mendapatkan file sumber C # panjang yang berisi kelas yang terlihat seperti ini:

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

Di sisi klien Anda, kode yang memakan layanan Web:

  1. instantiate MyService.
  2. setel properti Url-nya
  3. memanggil metode Web
azheglov.dll
sumber
5
Hal ini membuat layanan Web ASMX "gaya lama" - yang sudah usang - harus menggunakan WCF sekarang
marc_s
7

Jika Anda ingin menambahkan referensi wsdl di proyek .Net Core , tidak ada opsi "Tambahkan referensi web".

Untuk menambahkan referensi wsdl pergi ke Solution Explorer, klik kanan pada item proyek Referensi dan kemudian klik pada opsi Add Connected Service .

masukkan deskripsi gambar di sini

Kemudian klik 'Referensi Layanan Web Microsoft WCF':

masukkan deskripsi gambar di sini

Masukkan jalur file ke dalam kotak teks URI dan impor WSDL:

masukkan deskripsi gambar di sini

Ini akan menghasilkan klien WCF yang sederhana dan sangat mendasar dan Anda dapat menggunakannya seperti ini:

YourServiceClient client = new YourServiceClient();
client.DoSomething();
Nedzad G
sumber
Ekstensi ini tidak tampak bagi saya.
Rafael Pizao