Як користуватися WSDL


126

Мені потрібно споживати веб-сервіс. Вони надіслали мені файл WSDL. Що мені робити, щоб додати його на свій веб-сайт і почати використовувати його як проксі. (Якщо я розміщую його у віртуальному каталозі, його можна буде виявити, але чи дає мені зв’язок із реальною веб-службою?)


9
Ну, я підтримав, оскільки це питання, на який я думаю, що інші користувачі тут отримали б користь від того, щоб побачити відповідь. Я шукав саме цю проблему, і я радий, що знайшов її тут.
schizoid04

Відповіді:


138

Я б запустив Visual Studio, створив веб-проект (або консольний додаток - не має значення).

Для .Net Standard:

  1. Я права кнопка миші на проект і виберіть «Add Service Reference» з Add контекстного меню.
  2. Я натиснув би кнопку Додатково, а потім - Додати службу посилання.
  3. Я отримав би повний шлях до файлу wsdl і вставлю в адресний рядок. Потім запустити стрілку (кнопка переходу).
  4. Якщо під час завантаження файлу виникає помилка, тоді має бути зламаний і невирішений URL-адрес, який потрібно вирішити, як показано нижче: введіть тут опис зображення Для отримання інформації про те, як виправити, зверніться до цієї відповіді: Відповідь Stackoverflow: Неможливо створити посилання на службу для wsdl файл

Якщо помилок немає, вам слід просто встановити простір NameS, який ви хочете використовувати для доступу до служби, і він буде генерований для вас.

Для .Net Core

  1. Я б клацнув правою кнопкою миші на проект і вибрав Підключений сервіс у контекстному меню Додати.
  2. Я вибрав би зі списку провідного постачальника веб-служб Microsoft WCF.
  3. Я б натиснути огляд і відразу вибрати файл wsdl, встановіть простір імен, і я готовий піти. Зверніться до URL-адреси виправлення помилок, якщо виникає помилка.

Будь-який із способів, описаних вище, створить для вас простий, дуже базовий клієнт WCF. Ви повинні знайти клас "YourservicenameClient" у створеному коді.

Для довідки, згенерований файл cs можна знайти у Obj / debug (або випуску) / XsdGeneratedCode, і ви все ще можете знайти dll у папці TempPE.

Створена Служба (и) повинна мати методи для кожного із визначених методів у договорі WSDL.

Миттєво запросіть клієнта і зателефонуйте до методів, які ви хочете зателефонувати - це все, що є!

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

Якщо вам потрібно вказати віддалену URL-адресу (не використовуючи створену за замовчуванням), ви можете легко зробити це в конструкторі проксі-клієнта:

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

де configNameвикористовується назва кінцевої точки (ви будете використовувати всі налаштування, крім URL-адреси), а remoteURL- рядок, що представляє URL-адресу, до якої потрібно підключитися (замість того, що міститься в конфігурації).


Це чудово працює. Лише одне запитання, якщо я маю файл wsdl на своїй машині, і я додаю посилання на цей файл. При виконанні URL-адреса він звертається до того, на якому розміщується веб-служба, або мені потрібно уточнити Прив'язування та Кінцеву точку?
jmayor

1
Це залежить від вас - за замовчуванням код, створений для клієнтського проксі, буде мати URL-адресу, яка міститься всередині WSDL - якщо вам потрібно перейти до іншої URL-адреси, потрібно вказати її самостійно.
marc_s

Чому це так просто? Хіба немає улову? : p Дякую!
Одіс

1
В якості прийнятої відповіді було б добре, якщо ви також згадали, як використовувати веб-сервер, розміщений на веб-сайті з URL-адресою.
Caltor

Я думаю, що я досить близький до того, щоб змусити це працювати. У мене встановлена ​​веб-служба за допомогою інструменту Додати довідку служби. Я в змозі миттєво активізувати клієнта, але я не можу викликати методи. Кінцевою точкою є реалізація Java, і все, що я бачу, - це XML. Метод, який я намагаюся викликати, шукає клієнта і "щось інше". Щось ще - клас. Яке дивовижне. Я можу поставити це на посаді нижче, якщо це допоможе, але я збентежений.
картограф

45

У візуальній студії.

  • Створіть або відкрийте проект.
  • Клацніть правою кнопкою миші проект від Explorer Explorer.
  • Виберіть "Додати довідку про послуги"
  • Вставте адресу з отриманим WSDL.
  • Натисніть кнопку ОК.

Якщо помилок немає, ви повинні мати можливість бачити посилання на службу в браузері об'єктів та всіх пов'язаних методів.


9
<3 Visual Studio .. Так, це дійсно так просто :)
cwap

3
В ОП не адреса, а файл.
Хенк Холтерман

1
Постачальник веб-сервісу, можливо, відключив WSDL (захист від незрозумілості), тому немає URL-адреси, де можна отримати доступ до WSDL, а потім додавати веб-посилання у VS не буде працювати. Однак постачальник хоче, щоб ВАС (я маю на увазі ОП) знав усе, що вам потрібно знати про договір на послугу, тому він надіслав файл WSDL. Тепер ОП потрібно генерувати з нього проксі-код, питання в тому, як.
ажеглов

3
Ввівши шлях до файлу. Чому ви думаєте, що це не працює?
Джон Сондерс

1
Привіт @vidalsasoon. Чи можете ви пояснити коротко, як мені займатися використанням цих класів, які я бачу в своєму досліднику класів. ?
CalZone

16

Використовуйте утиліту WSDL.EXE для створення проксі-сервера веб-служби з WSDL.

Ви отримаєте довгий вихідний файл C #, який містить клас, який виглядає приблизно так:

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

У вашому клієнті код, що споживає веб-сервіс:

  1. інстанціювати MyService.
  2. встановити його властивість Url
  3. викликати веб-методи

5
Це створює "старий стиль" веб-сервісу ASMX - ті застарілі - замість цього сьогодні слід використовувати WCF
marc_s

7

Якщо ви хочете додати посилання wsdl у проект .Net Core , опція "Додати веб-посилання" не існує.

Щоб додати посилання на wsdl, перейдіть до Провідника рішень, клацніть правою кнопкою миші елемент пункту Посилання та натисніть на опцію Додати підключену службу .

введіть тут опис зображення

Потім натисніть "Посилання на веб-службу Microsoft WCF":

введіть тут опис зображення

Введіть шлях до файлу в текстове поле URI та імпортуйте WSDL:

введіть тут опис зображення

Це створить простий, дуже базовий клієнт WCF, і ви можете використовувати його приблизно так:

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

Це розширення не видається мені.
Рафаель Пізао
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.