Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设计用于访问接受xml请求的Web服务的代码_C#_.net_Xml_Web Services - Fatal编程技术网

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

C# 设计用于访问接受xml请求的Web服务的代码,c#,.net,xml,web-services,C#,.net,Xml,Web Services,我想创建一个C#代码来访问只有一个方法的Web服务: public string HandleRequest(string xml). 请求本身以xml格式发送,其中xml内容指定要执行的操作类型以及必需/可选参数 来自服务的响应也以xml形式返回,并且每个发送的请求类型可能不同 我想设计一个解决方案,以促进与此服务的交互,并允许我: 根据给定参数(操作类型、其他可选参数等)动态生成xml。当前,xml是从已创建的文件加载的 以简单的方式解析响应(从中创建强类型对象?) 这样做的好办法是什么?

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

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

来自服务的响应也以xml形式返回,并且每个发送的请求类型可能不同

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

  • 根据给定参数(操作类型、其他可选参数等)动态生成xml。当前,xml是从已创建的文件加载的
  • 以简单的方式解析响应(从中创建强类型对象?)
  • 这样做的好办法是什么?我发现很难找到一个,因为请求/响应xml是动态的,可能会随着调用的不同而变化

    其他一些信息:

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

  • 这听起来像是XML-RPC实现可能是您所追求的。来自

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

    维基百科也列出了一些协议

    虽然我并没有专门使用它,但我使用的是一个围绕一个劣质版本的服务。由于它没有真正遵循规范,我们无法利用任何预先存在的实现

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

    请注意维基百科上关于XML-RPC膨胀的批评。研究JSON-RPC作为替代方案可能值得一试。当然,这里列出了一些您可以查看的内容

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