如何将可变数量的参数传递给Web服务

时间:2008-08-29 07:38:41

标签: c# web-services soap

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

可以这样做吗?

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

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

这会起作用还是我们应该采取不同的方式?

4 个答案:

答案 0 :(得分:5)

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

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

XML Document然后将其与XSD联系起来。这样你就可以预先验证webservice的输入。

看看这些

IBM Developer ASP.NET Forum

我还建议使用它来测试webservices及其免费 WSStudio

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果你不喜欢数组的想法(这不是确定Konrad的答案 - 你可能有不同的参数类型)你可以传递复杂的对象(即你自己制作的对象)..缺点是你不能再测试使用ASMX页面,但需要在代码中完成所有操作(这不是一件坏事,特别是如果您习惯了它)。

答案 3 :(得分:0)

我同意littlegeek。不要让你的网络服务很难。使其成为接收消息的接收端点。特别是命令消息。

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