【问题标题】:How to set HTTP Headers from client class inherited from SoapHttpClientProtocol如何从继承自 SoapHttpClientProtocol 的客户端类设置 HTTP 标头
【发布时间】:2011-01-12 04:48:22
【问题描述】:

我正在使用从 SoapHttpClientProtocol 继承的 MyClass 类(通过从 .wsdl 文件创建 WebReference 在我的项目中自动生成,代表服务)。

在调用此服务的“WebMethod”之前,我需要自定义我的请求的 http 标头。我尝试以这种方式重载 SoapHttpClientProtocol 的 GetWebRequest() 方法:

public partial class MyClass: System.Web.Services.Protocols.SoapHttpClientProtocol{

 protected override WebRequest GetWebRequest(Uri uri) {

            HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(uri);

            request.Headers.Add("MyCustomHeader", "MyCustomHeaderValue");

            return request;

        }
    }

我希望在 MyClass 的构造函数中调用 GetWebRequest,显然不是。

有人可以帮我吗?

【问题讨论】:

  • 感谢您的回答,这很有帮助。不幸的是,如果你说的是真的(我不怀疑;)),这意味着服务应该能够使用我的自定义标头,并且它不能(显然)......在调用 GetWebRequest() 之后,是还有另一种方法,可以(以任何方式)清除现有标题?
  • 我添加了一些类似于我的 SoapHttpClientProtocol 实现的东西,但它似乎并没有真正添加标题,或者至少服务无法识别它们。您在这方面取得了进展吗?

标签: .net header soaphttpclientprotocol


【解决方案1】:

当代理需要获取网络请求时调用GetWebRequest。

【讨论】:

    【解决方案2】:

    对,GetWebRequest virtual 应该在每次调用 web 方法时调用。

    【讨论】:

      猜你喜欢
      • 2011-10-19
      • 2020-06-01
      • 1970-01-01
      • 2017-01-19
      • 2011-03-11
      • 2020-01-15
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多