题
我们正在尝试创建一个 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>
这行得通还是我们应该采取不同的方式?
解决方案
我会传入一个 xml 文档,而不是为此执行 concreate 函数。
您示例中的 Web 服务存在漏洞 - 消费者需要了解太多有关此接口以及 Web 服务内部实现的信息。
XML 文档,然后将其与 XSD 绑定。这样您就可以预先验证 Web 服务的输入。
看看这些
我还建议使用它来测试网络服务及其免费WS工作室
其他提示
您可以简单地传递一个可变长度数组作为参数。
如果您不喜欢数组的想法(这不是康拉德的答案 - 您可能有不同的参数类型),您可以传递复杂的对象(即你自己制作的物品)..缺点是您无法使用 ASMX 页面进行测试,而是需要在代码中完成所有操作(这并不是一件坏事,特别是如果您习惯了的话)。
我同意小极客的观点。不要让你的网络服务变得困难。使其成为接收端点来接收 消息. 。特别是命令消息。
不隶属于 StackOverflow