繁体   English   中英

C#Web服务客户端:如何添加自定义标头以进行请求?

[英]c# web service client: how to add custom header to request?

为了访问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服务调用之前放置“ Identity”元素。...我需要最简单的解决方案。 我在其他问题中看到了如何放置一个参数...但是身份是一个嵌套对象,我不知道该怎么办。 有人可以帮忙吗?

这是解决方案,来自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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM