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

时间:2020-03-05 18:44:54  来源:igfitidea点击:

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

能做到吗?

基本上,我们希望不传递所有可能的参数,而只传递设置值,并使用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>

这项工作还是我们应该采取其他方式?

解决方案

回答

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

回答

如果我们不喜欢数组的想法(这不能说明Konrad的答案,我们可能具有不同的参数类型),则可以传递复杂的对象(即,我们自己创建的对象)。缺点是我们无法使用ASMX页面进行测试,但需要在代码中完成所有操作(这并不是一件坏事,特别是如果我们习惯使用它)。

回答

我会传递一个xml文档,而不是为此做concreate函数。

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

XML文档,然后将其与XSD关联。这样,我们可以预先验证对Web服务的输入。

看看这些

IBM开发人员
ASP.NET论坛

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

回答

我同意littlegeek。不要使Web服务是很难的方法。使它成为接收消息的接收端点。特别是命令消息。

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