Как передать переменное количество параметров в веб-сервис

StackOverflow https://stackoverflow.com/questions/34128

  •  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. Таким образом, вы можете предварительно проверить ввод в веб-сервис.

Взгляните на эти

IBM Developer Форум ASP.NET

Я бы также рекомендовал использовать это для тестирования веб-сервисов и его бесплатного WSStudio

Другие советы

Вы можете просто передать массив переменной длины в качестве параметра.

Если вам не нравится идея массива (это не ответ Конрада - у вас могут быть различные типы параметров), вы можете передавать сложные объекты (то есть объекты, которые вы сделали сами). Недостатком является то, что вы не можете затем проверить используя страницу ASMX, но нужно будет делать все это в коде (что не так уж и плохо, особенно если вы к этому привыкли).

Я согласен с Littlegeek. Не делайте ваш веб-сервис сложным методом. Сделайте его конечной точкой для получения сообщений . В частности, командное сообщение.

http://www.eaipatterns.com/CommandMessage.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top