如何从WS Response中提取SOAP标头

时间:2015-09-24 18:14:57

标签: java c# web-services wcf soap

我在.NET环境中并调用Java SOAP Webservice。我将服务添加为 Web引用,并为我加载了代理和配置设置。到现在为止还挺好。

现在,对我而言,就像调用另一个库一样,因为所有类型都已加载,我可以调用方法并将返回类型分配给.Net为我生成的代理类。

但是,我的提供商表示他们正在SOAP标头中发送一些 Cookie 。现在,如何从C#代码访问SOAP头?因为当我调用服务并检索响应时,就像调用方法并检索Typed响应一样。不确定如何从中提取SOAP标头信息。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您可以使用 OperationContext 类:https://msdn.microsoft.com/pt-br/library/system.servicemodel.operationcontext%28v=vs.110%29.aspx

  

在服务操作中使用OperationContext来访问   当前的操作执行环境。特别是操作   context用于访问双工服务中的回调通道   在部分操作中存储额外的状态数据,以及   访问传入消息标题和属性以及添加传出   邮件标题和属性。

您可以从此标题中读取信息(将“Cookie”替换为您要阅读的标记名称):

var cookieIndex = OperationContext.Current.IncomingMessageHeaders.FindHeader("Cookie", "");
XmlReader reader = OperationContext.Current.IncomingMessageHeaders.GetReaderAtHeader(cookieIndex).ReadSubtree();

希望有所帮助