【问题标题】:How to you pass a variable amount of parmeters to web-service如何将可变数量的参数传递给 Web 服务
【发布时间】:2008-08-29 07:38:40
【问题描述】:

我们正在尝试创建一个网络服务,我们计划将可变数量的变量传递给它。

这个可以吗?

我们希望只传递设置值并使用网络服务中设置的默认值,而不是传递所有可能的参数。

这是我们要发送的 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>

这会奏效还是我们应该采取不同的方式?

【问题讨论】:

    标签: c# web-services soap


    【解决方案1】:

    我会传入一个 xml 文档,而不是为此执行 concreate 函数。

    您示例中的 Web 服务存在漏洞 - 消费者需要对此接口和内部 Web 服务的实现了解太多。

    XML 文档,然后将其与 XSD 绑定。这样您就可以预先验证 Web 服务的输入。

    看看这些

    IBM Developer ASP.NET Forum

    我还建议使用它来测试网络服务及其免费 WSStudio

    【讨论】:

      【解决方案2】:

      您可以简单地将可变长度数组作为参数传递。

      【讨论】:

        【解决方案3】:

        如果你不喜欢数组的想法(这不是康拉德的答案——你可能有不同的参数类型)你可以传递复杂的对象(即你自己制作的对象)。缺点是你不能然后测试使用 ASMX 页面,但需要在代码中完成所有操作(这并不是一件坏事,尤其是如果您习惯了它)。

        【讨论】:

          【解决方案4】:

          我同意 littlegeek 的看法。不要让你的 web 服务是硬方法。使其成为接收消息的接收端点。特别是命令消息。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-05-19
            • 1970-01-01
            • 1970-01-01
            • 2010-11-05
            • 1970-01-01
            • 2014-07-20
            • 2010-11-06
            相关资源
            最近更新 更多