【问题标题】:Modifying SOAP requests with GetWebRequest使用 GetWebRequest 修改 SOAP 请求
【发布时间】:2011-11-15 13:43:07
【问题描述】:

我正在尝试动态修改对 ASMX 服务的 SOAP 请求中的 XML 数据。

我重写了SoapHttpClientProtocol 类中的GetWebRequest() 方法,以便读取和修改RequestStream 包含的XML 数据。

问题是,请求似乎是空的,里面没有任何数据。这是因为尚未生成和序列化 SOAP 数据还是我做错了什么?

【问题讨论】:

  • 很可能,您是否尝试过覆盖GetWebResponse
  • 不,它是 GetWebRequest。也许我对该方法的理解是有缺陷的......它是否可能在设置实际的 SOAP 数据之前发生?看起来肯定是这样的。
  • 我对文档的解释是 GetWebRequest 将返回一个空的 Web 请求(对于给定的 url)来填充。然后调用 GetWebResponse 方法,以便在使用 SOAP 请求主体“填充”请求对象后获得实际响应,因此这将是修改它的地方。
  • 你是绝对正确的。这毕竟是正确的方法,方法进入时请求对象已经被完全填充。谢谢。

标签: c# soap asmx soaphttpclientprotocol


【解决方案1】:

您需要的是SoapExtension。您可以挂接到ProcessMessage 中的SoapMessageStage.AfterSerialize 阶段以修改您的soap 消息。我过去这样做是为了在无法添加对 Microsoft 的 WSE 库的依赖项的情况下添加 WSSE 标头(因为它不适用于 Mono)。

完整教程在这里:http://msdn.microsoft.com/en-us/magazine/cc164007.aspx

GetWebRequest 对你来说太早了,GetWebResponse 太晚了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2017-07-29
    • 2015-03-03
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多