gpt4 book ai didi

c# - 使用 IClientMessageInspector 从 WCF soap 请求中删除操作节点 mustUnderstand

转载 作者:太空狗 更新时间:2023-10-29 17:57:56 26 4
gpt4 key购买 nike

我正在使用我无权访问且无法修改的 WSDL 访问 WCF 服务。对于其中一个请求,远程服务正在终止,因为我们正在发送:

<Action s:mustUnderstand="1"....>

经过广泛搜索,我无法找到解决问题的简单方法。所以,在典型的消息中:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" />
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<retrieveBooking xmlns="http://services.rccl.com/Interfaces/RetrieveBooking">
<OTA_ReadRQ TransactionActionCode="RetrievePrice" SequenceNmbr="1" Version="1" xmlns="http://www.opentravel.org/OTA/2003/05/alpha">

我想我可以删除这个节点作为消息检查器的一部分:

internal class MyMessageInspector : IClientMessageInspector
{
public object BeforeSendRequest(ref Message aRequest, IClientChannel aChannel)
{
//Get rid of mustUnderstand Action node
foreach (MessageHeaderInfo headerInfo in aRequest.Headers.UnderstoodHeaders)
{
aRequest.Headers.UnderstoodHeaders.Remove(headerInfo);
}

return null;
}
}

但是,即使在我删除所有元素后 aRequest.Headers.UnderstoodHeaders 为空,我仍然看到在 XML 中发出了 Action 节点。

  1. 我必须做什么才能使这项工作成功?
  2. 我如何到达消息内容,以便我可以检查第一个节点的名称body 标签 retrieveBooking 在这种情况下? (我只需要做这是针对特定消息,而不是所有消息)

最佳答案

最后的答案非常简单。

public object BeforeSendRequest(ref Message aRequest, IClientChannel aChannel)
{
//For the CabinDetail message the API provider has requested that we REMOVE the XML action node from the header as it causes their end to fail
//<s:Header>
//<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none" />
//</s:Header>
if (aRequest.ToString().Contains("CabinDetail"))
{
int headerIndexOfAction = aRequest.Headers.FindHeader("Action", "http://schemas.microsoft.com/ws/2005/05/addressing/none");
aRequest.Headers.RemoveAt(headerIndexOfAction);
}

return null;
}

关于c# - 使用 IClientMessageInspector 从 WCF soap 请求中删除操作节点 mustUnderstand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com