我在.NET环境中并调用Java SOAP Webservice。我将服务添加为 Web引用,并为我加载了代理和配置设置。到现在为止还挺好。
现在,对我而言,就像调用另一个库一样,因为所有类型都已加载,我可以调用方法并将返回类型分配给.Net为我生成的代理类。
但是,我的提供商表示他们正在SOAP标头中发送一些 Cookie 。现在,如何从C#代码访问SOAP头?因为当我调用服务并检索响应时,就像调用方法并检索Typed响应一样。不确定如何从中提取SOAP标头信息。
有什么想法吗?
答案 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();
希望有所帮助