【问题标题】:Creating a SOAP Envelope programatically and including it in the HttpWebRequest in .NET以编程方式创建 SOAP 信封并将其包含在 .NET 的 HttpWebRequest 中
【发布时间】:2009-09-17 06:04:22
【问题描述】:

我参与了一个动态调用网络服务的项目。

我已经找到了一种调用没有方法参数的 web 服务方法的方法,但现在我需要的是调用有参数的 web 方法。

想知道是否有关于如何创建肥皂信封以及如何将其包含在我的 HttpWebRequest 中的好的示例?

非常感谢!

干杯, 安

【问题讨论】:

  • 就算知道信封的结构,又怎么知道往里面放什么数据呢?
  • 我基本上知道哪些数据需要在 Web 服务之间传递,因为我已经编写了两个 Web 服务。我不认为我需要传递的数据参数会经常变化,所以我对它需要什么数据有一个完整的定义。

标签: c# .net web-services asmx


【解决方案1】:

SoapFormatter 的序列化怎么样?

SoapFormatter Class

您还可以通过使用接口和动态加载的程序集来使用强类型类

Assembly a = Assembly.LoadFile("Path");

您将能够“热插拔”新的代理或其他类型。

【讨论】:

  • 将尝试这样做。谢谢你! :)
  • 嗨 mallows98,你能解决这个问题吗?我在这里遇到了类似的问题:stackoverflow.com/questions/1609294/…
  • 嗨 Shoko,不,我基本上重新设计了我的代码并使用了标准 Web 服务模式,您需要将 Web 服务设置为动态的,并确保我将使用的所有方法签名访问我的网络服务是同名的。我重新设计我的代码的原因是因为我的项目时间不多了,我需要快速做一些事情。希望这会有所帮助!
【解决方案2】:

当您可以从 WSDL(使用 svcutil.exe 或 wsdl.exe)生成客户端代理并让框架完成繁重的工作时,您是否有任何理由要手动生成 SOAP 信封并使用 HttpWebRequest 调用 Web 服务为你?

通常,Web 服务会公开一个契约,该契约描述了您可以调用的操作以及所涉及的类型,允许客户端发现并使用它。

【讨论】:

  • 感谢您的回答。我需要手动执行此操作是有原因的……我正在创建一个通用的电子邮件生成器/发送服务,它将从不同的客户端提取电子邮件数据。我考虑过从 WSDL 生成代理,但我假设它的缺点是,如果我们尝试添加需要发送电子邮件的新涉众 Web 应用程序,我可能需要每次重新编译代码。我的这个假设可能是错误的,但如果你能提出任何其他我可以做到这一点的方法,我将不胜感激!干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多