【问题标题】:c# web service client: how to add custom header to request?c# web 服务客户端:如何向请求添加自定义标头?
【发布时间】:2015-01-12 06:34:37
【问题描述】:

为了访问 Web 服务,我使用 Visual Studio“添加服务引用”创建了一个代理类。不幸的是,我必须在肥皂标题中放入以下元素

<soapenv:Header>
  <ser:CF>XXXXXXXXXX</ser:CFSender>
        <ser:Identity xmlns="http://company.org" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
     <ser:AppKey>XXX</ser:AppKey>
     <ser:AppName>XXXX</ser:AppName>
     <ser:Parameter>Y</ser:Parameter>
  </ser:Identity>
 </soapenv:Header>

Visual Studio 生成的代理只有以下元素作为方法参数

<ser:CF>XXXXXXXXXX</ser:CFSender>

但不是身份。我需要以编程方式将“身份”元素放在 Web 服务调用之前......我需要最简单的解决方案。我在其他问题中看到如何放置一个参数......但身份是一个嵌套对象,我不知道该怎么做。 有人可以帮忙吗?

【问题讨论】:

    标签: c# web-services header client soapheader


    【解决方案1】:

    这里是解决方案,来自http://blogs.msdn.com/b/wsdevsol/archive/2014/02/07/adding-custom-messageheader-and-http-header-to-a-wcf-method-call.aspx(使用 Identity obj 而不是 userInfo)

    using(new OperationContextScope(client.InnerChannel)) {
    
    // We will use a custom class called UserInfo to be passed in as a MessageHeader
    
    UserInfo userInfo = new UserInfo();
    
    userInfo.FirstName = "John";
    
    userInfo.LastName = "Doe";
    
    userInfo.Age = 30;
    
    
    
    // Add a SOAP Header to an outgoing request
    
    MessageHeader aMessageHeader = MessageHeader.CreateHeader("UserInfo", "http://tempuri.org", userInfo);
    
    OperationContext.Current.OutgoingMessageHeaders.Add(aMessageHeader);
    

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2021-09-02
      • 2018-07-11
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 2017-11-06
      相关资源
      最近更新 更多