c# - 如何使用 Refit 在 dotnet 5 中使用 XOP 处理 XML SOAP?
问题描述
如何处理包含 XOP 的 XML SOAP 消息?
正如标题所说,这是关于 .NET 5 和 Refit 的。
这是 XML 消息:
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<filename>somename</filename>
</soap-env:Header>
<soap-env:Body>
<FileResult>
<FileContent>
<xop:Include href="cid:68803cfe-6883-4cb3-83f5-6883c8d774fc" xmlns:xop="http://www.w3.org/2004/08/xop/include"/>
</FileContent>
</FileResult>
</soap-env:Body>
</soap-env:Envelope>
Refit客户端初始化如下:
var httpClient = new HttpClient(new Handlers.CustomHttpMessageHandler()) { BaseAddress = new Uri(<url>), DefaultRequestVersion = new Version(2, 0) };
return RestService.For<ITheApi>(httpClient,
new RefitSettings
{
ContentSerializer = new XmlContentSerializer(
new XmlContentSerializerSettings
{
XmlReaderWriterSettings = new XmlReaderWriterSettings()
{
WriterSettings = new XmlWriterSettings
{
OmitXmlDeclaration = true,
},
ReaderSettings = new XmlReaderSettings
{
IgnoreWhitespace = true,
}
},
XmlNamespaces = new XmlSerializerNamespaces()
}
)
}
);
唯一添加日志记录并Handlers.CustomHttpMessageHandler
取消转义查询参数。
我阅读了多个使用答案XmlDictionaryReader.CreateMtomReader
,但这不是我可以在改装设置中添加的内容。这是否意味着我必须为此请求放弃 Refit 并仅使用 HttpClient ?或者还有其他选择吗?
解决方案
推荐阅读
- css - 有没有办法在 Django 模板中动态添加 CSS/JS 文件?
- elasticsearch - 将 dynamic_date_formats 添加到现有索引 - 我需要重新摄取我的数据吗?
- javascript - 如何防止用户在回答问题之前重定向到下一页
- c# - 如何通过 MethodInfo 获得简化的 ReturnType?
- php - PHP - 获取当前星期的天数
- reactjs - Next JS 和 Redux:getInitialProps 不返回 props
- c# - 如何用 Linq 插入字节数组数据?
- python - 替换文本文件中的特定行
- postgresql - SqlAlchemy/Postgresql ORM:进行子查询,计算 jsonb 中 ID 的实例
- r - 将函数 (AIC) 应用于列表中的元素