设计用于访问接受 xml 请求的 Web 服务的代码

本文关键字:请求 Web 服务 代码 xml 用于 访问 | 更新日期: 2023-09-27 17:56:42

我想创建访问只有 1 个方法的 Web 服务的 C# 代码:

public string HandleRequest(string xml).

请求本身以 xml 格式发送,其中 xml 内容指定要执行的操作类型以及必需/可选参数。

来自服务的响应也以 xml 格式返回,并且可能因发送的每个请求类型而异。

我想设计一个解决方案,该解决方案将促进与此服务的交互,这将允许我:

  1. 从给定参数(操作类型、其他可选参数等)动态生成 xml。当前,xml 是从已创建的文件加载的
  2. 以简单的方式解析响应(从中创建强类型对象?

这样做的好解决方案是什么?我发现很难想出一个,因为请求/响应 xml 是动态的,并且可能会因调用而异。

一些附加信息:

  1. 该服务基于 Java,托管在 Tomcat(轴 1.2)下
  2. 该服务没有 wsdl 文档(即使有,我也无法自动生成一些强类型的请求/响应类,因为服务本身只接收和输出 XML,而不是一些复杂类型)。

设计用于访问接受 xml 请求的 Web 服务的代码

这听起来像是XML-RPC实现可能是你所追求的。来自维基百科;

XML-RPC 的工作原理是将 HTTP 请求发送到实现 协议。在这种情况下,客户端通常是想要 调用远程系统的单个方法。多个输入参数可以 传递给远程方法,返回一个返回值。这 参数类型允许将参数嵌套到映射和列表中,因此 可以运输更大的结构。因此,XML-RPC 可用于 将对象或结构作为输入和输出传输 参数。

维基百科还列出了该协议的一些Java实现。

虽然我没有专门使用它,但我使用过围绕 JSON-RPC 的混蛋版本设计的服务。由于它没有真正遵循规范,我们无法利用任何预先存在的实现。

就个人而言,我没有看到使用这种协议的好处,因为我们仍然需要对服务公开的操作及其相关约束(如强制参数等)有明确的定义。除此之外,我们还必须处理 JSON(在您的例子中为 XML)到关联对象模型的序列化/反序列化。这主要是由于我们与之互动的供应商以及他们不符合规范。如果你的符合标准,那么你可能会发现提供的现有实现可能会给你一种简洁的处理方式。

请注意维基百科上关于XML-RPC膨胀的批评。将 JSON-RPC 作为替代方案可能是值得的。当然,您可以查看一些实现。

编辑:我没有正确阅读您的问题。不好意思。我以为你正在考虑提供服务。我仍然会查看有关 XML-RPC/JSON-RPC 的链接,因为它可能会让您了解如何敲毁测试客户端。就.NET而言,我查看了Jayrock代码库,以了解JSON-RPC协议是如何实现的,以及我们是否可以在我们的场景中使用它。您可以大致了解他们如何处理请求和响应。从内存中,他们甚至可能具有演示如何调用服务的测试工具或示例代码。这可以给你一些想法。