Я предполагаю, что у вас уже есть веб-сервис, который вы хотите использовать.Существует несколько примеров использования веб-служб в Интернете (например: Использование веб-служб из приложения WinForms ).
Добавление веб-ссылки
Сначала необходимодобавьте веб-ссылку в ваш проект на C #.В VS2005 вы можете сделать это, щелкнув правой кнопкой мыши по проекту и выбрав «Добавить веб-ссылку» и указав URL-адрес веб-службы.В VS2008 или новее есть несколько дополнительных щелчков, как описано здесь .
После того, как вы это сделаете, VS сгенерирует все необходимые прокси-классы дляу вас есть методы как для синхронного, так и для асинхронного вызова, которые вы можете использовать, как если бы объект был создан локально.
Просмотр сгенерированных классов
Например, если ваша веб-служба имеет один метод (DoSomething
) и расположен по адресу www.example.com/MyService.asmx
(и также называется «MyService»), Visual Studio создаст класс с именем «MyService», который будет выглядеть примерно так:
namespace MyNamespace // <-- this is the name you choose when you
{ // added the web reference
public class MyService : SoapHttpClientProtocol
{
// synchronous execution
public void DoSomething()
{
}
// async execution
public void DoSomethingAsync()
{
}
// callback event for async execution
public event DoSomethingCompletedEventHandler DoSomethingCompleted;
}
}
Для проверкисодержимое сгенерированного пространства имен, дважды щелкните веб-ссылку в обозревателе решений (она должна находиться внутри папки с именем «Веб-ссылки»). Откроется браузер объектов.
Синхронное использование сгенерированных классов
Самый простой способ использовать ваш класс - создать экземпляр и вызвать метод:
// create a new instance of the service
MyService service = new MyService();
// invoke the method
service.DoSomething(); // <-- this will block the thread until completed
Использование сгенерированных классов асинхронно
Чтобы использовать асинхронную версию, вы можете прикрепить обработчик событий:
// create a new instance of the service
MyService service = new MyService();
// attach the event handler
service.DoSomethingCompleted += MyEventHandler;
// invoke the method asynchronously
service.DoSomethingAsync(); // <-- this will be invoked on a background thread