如何从WS响应中提取SOAP报头

本文关键字:提取 SOAP 报头 响应 WS | 更新日期: 2023-09-27 18:14:22

我在。net环境中调用Java SOAP web服务。我将该服务添加为Web参考,它为我加载代理和配置设置。到目前为止一切顺利。

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

然而,我的提供者说他们正在SOAP报头中发送一些cookie。现在,我如何从我的c#代码访问SOAP头呢?因为当我调用服务并检索响应时,就像调用方法并检索类型化响应一样。不确定如何从中提取SOAP报头信息。

任何想法?

如何从WS响应中提取SOAP报头

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

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

你可以像这样从Header中读取信息(将"Cookie"替换为你想要读取的标签名称):

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

希望有所帮助