【问题标题】:Best way to generate a soap xml message?生成soap xml消息的最佳方法?
【发布时间】:2011-02-08 13:50:02
【问题描述】:

在c#中生成soap xml的最佳方法是什么?如果可能,我更喜欢使用 xml 序列化。另外,我需要在soap头中添加一些自定义属性,所以不确定这是否会使事情复杂化。

还有一点需要注意:我正在通过 TCP 连接到 linux 服务器上的 soap 服务器——soap 服务器是用 C++ 构建的。

此外,soap 服务器不响应 wsdl 请求 - 它已完全锁定。我工作的地方安全性非常严... :)

【问题讨论】:

  • 您是否有任何类型的用于此服务的 WSDL? XSD?机器消费的任何定义?你能拿到一个吗?这些东西存在,所以我们不必浪费时间手动构建 SOAP 请求。
  • @Programming Hero:没有 WSDL,有 XSD。我需要构建一个 full SOAP 消息,而不是 Web 服务生成的部分消息。希望有帮助!

标签: c# soap xml-serialization


【解决方案1】:

如果您有 XSD,请查看 WSCF.blue

This article 应该介绍一下它背后的概念。您可能需要自己生成一些服务定义,但它应该比手动编写 SOAP 消息更容易构建 WCF 合同和客户端代理。

【讨论】:

  • 我绝对喜欢网站中描述的想法。不确定它现在是否能解决我的需求,但这是我想采取的方向!
【解决方案2】:

最好的方法是使用“添加服务引用”并指向服务的 WSDL,无论是在磁盘上还是在网络上。然后通过生成的代理类调用服务。

见“How to Consume a Web Service”。

【讨论】:

  • @John,谢谢,但是如果我需要序列化类以与肥皂服务器进行通信呢?对不起,我原来的问题没有说清楚......!
  • @code4life:您阅读了我发布的链接中的文章吗?这就是您调用 SOAP 服务器的方式。它不必是另一个 WCF 服务器。 WCF 是可互操作的。只需按照这些指示,看看会发生什么。
  • @John,我对如何生成 肥皂消息更感兴趣。实际的通信本身是通过客户端站点的标准框架处理的——我无法控制通信层。顺便说一句,我认为您的想法是让代理类通过 wsdl 生成将是一个好主意 - 除了肥皂服务器是基于 tcp 的并且不支持 wsdl 查询(例如,mysoapserver?wsdl)。
  • @code4Life:它没有来处理这样的查询。他们应该只向您发送 WSDL 文件。执行“添加服务引用”并输入磁盘上 WSDL 文件的路径。
  • @John,我尝试添加服务引用,但这不起作用。到 WSDL 的路径不起作用 - 肥皂服务器不支持 WSDL。事实证明,服务器发送和接收 SOAP 消息,但不提供 WSDL 支持。
【解决方案3】:

你想做什么?调用网络服务??

在 Visual Studio 中使用 WCF 和“添加服务引用” - 大功告成!

无需费力地手动构建任何 SOAP 消息 - 让 WCF 为您处理所有棘手的事情并专注于您的实际业务!

请访问 msdn.microsoft.com/WCF,了解一个很棒的介绍网站以及大量文章、视频和资料。

是的 - 如果您坚持使用 WCF 确实允许您使用 XML 序列化 - 但本机 WCF DataContractSerializer 可能是更好的选择(在大多数情况下,比 XML 序列化快大约 10%)。

【讨论】:

  • @marc,我正在尝试调用基于 linux 的肥皂服务器(C++、TCP)。有没有类似于 WCF 的简便方法(伙计,我真的很怀念 WCF)?
  • 那么您有可以调用的 URL 吗?尝试在最后使用?WSDL 调用它 - 如果您在浏览器窗口中显示 WSDL,您也可以将 WCF 服务连接到该 URL - 应该不成问题,真的。
  • 不,soap 服务器不支持 wsdl 查询。事实上,它根本不支持任何 http:// 调用……只监听 tcp 端口。
猜你喜欢
  • 2011-04-20
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 2010-09-10
相关资源
最近更新 更多