Как отправить SOAP-запрос и получить ответ в C#

Как отправить SOAP-запрос и получить ответ в C#
Тестируя различные API с помощь SoapUI, мы решили, что хотим иметь гибкие и настраиваемые под нас тесты. Для этого мы решили тестировать API не через SoapUI, а писать автоматизированные тесты на C#. Теперь рассмотрим, как отправлять SOAP-запросы и получать ответы в C# и при этом используя минимальное количество строк кода и без подключений «WSDL» к проекту. Про REST API и C# я, возможно, напишу статью позже.

В данной статье будет указан несуществующий API, поэтому не стоит пытаться его проверять.

Допустим у нас есть сервис, у которого есть API, и он доступен по адресу:

https://victorz.ru/soapapi/Transport

У данного сервиса есть ряд методов и один из них «GetInfo», который позволяет запрашивать информацию по транспортному средству передавая идентификатор транспортного средства.

Создаём в C# новый проект. Я создал проект с типом Windows Form. В проект подключим:

Создадим метод C#, который будет запрашивать информацию и возвращать ответ сервиса:

Описывать подробно метод не будем, так как в комментариях достаточно информации.

Далее нам надо вызвать с помощью данного методы сервис и получить от него ответ. К примеру, при нажатии на кнопку «button1» мы выведем ответ сервиса в текстовом поле «textBox1»:

В строке 7 кода вызывается метод и результат пишется в переменную.

Некоторые отправляемый запрос предпочитают указывать в коде. Я делаю код максимально независимым, поэтому у меня в методе считываются данные из файла «GetInfo.xml» (строка 6 кода).
Что из себя представляет данный файл? Это SOAP-конверт, который надо отправить сервису, чтобы получить от него ответ. В нашем случае, если я бы открыл «GetInfo.xml», то в нём мы бы увидели следующее:

Что надо отправить вам в адрес вашего сервиса вы должны знать и сохранить эти данные в аналогичном XML-файле.

Отправив запрос сервису, мы получим от него ответ и выведем в текстовое поле:

Далее нам остаётся только распарсить XML ответ и получить требуемые данные из XML.

Как видим всё достаточно просто. У нас SOAP API внутренний и не использует авторизацию, поэтому запрос отправляется без авторизации. Если у вас сервис с авторизацией, то в комментариях можете сообщить читателям, как отправлять данные с авторизацией.

Добавить комментарий

Ваш e-mail не будет опубликован.