Как передать переменное количество параметров в веб-сервис
-
09-06-2019 - |
Вопрос
Мы пытаемся создать веб-сервис, который мы планируем передавать переменному количеству переменных.
Можно ли это сделать?
По сути, вместо передачи всех возможных параметров мы хотим передать только установленные значения и использовать значения по умолчанию, установленные в веб-сервисе.
Вот пример XML-кода, который мы собираемся отправить, мы отправили бы неизвестное количество функций в зависимости от требуемого возврата.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<WebMethod xmlns="http://tempuri.org/">
<domains>
<function1>
<title>Some Title</title>
<type>25</type>
</function1>
<function2 />
<function3>
<param>13</param>
</function3>
</domains>
</WebMethod>
</soap:Body>
</soap:Envelope>
Будет ли это работать или мы должны поступить иначе?
Решение
Я бы передал XML-документ вместо того, чтобы делать для этого конкретные функции. Р>
Веб-служба в вашем примере имеет утечку - клиент должен знать слишком много об этом интерфейсе и реализации веб-службы внутри страны. Р>
XML-документ, а затем свяжите его с XSD. Таким образом, вы можете предварительно проверить ввод в веб-сервис. Р>
Взгляните на эти
Я бы также рекомендовал использовать это для тестирования веб-сервисов и его бесплатного WSStudio
Другие советы
Вы можете просто передать массив переменной длины в качестве параметра.
Если вам не нравится идея массива (это не ответ Конрада - у вас могут быть различные типы параметров), вы можете передавать сложные объекты (то есть объекты, которые вы сделали сами). Недостатком является то, что вы не можете затем проверить используя страницу ASMX, но нужно будет делать все это в коде (что не так уж и плохо, особенно если вы к этому привыкли).
Я согласен с Littlegeek. Не делайте ваш веб-сервис сложным методом. Сделайте его конечной точкой для получения сообщений . В частности, командное сообщение.