gpt4 book ai didi

c# - 如何使用 FluUrl 执行 XML POST

转载 作者:行者123 更新时间:2023-12-02 19:32:13 26 4
gpt4 key购买 nike

FlUrl在处理 Json/UrlEncoded 请求方面做得很好。但是,文档并没有真正指出如何处理其他请求类型,例如 text/xml

使用 FlUrl 执行 XML POST 的最佳方式是什么?

这(访问底层 HttpClient)有点违背了使用 FlUrl 的目的,因为您需要再次构建 URI 和内容:

var result = await "http://someUrl"
.AppendPathSegment(pathSegment)
.SetQueryParam("name", name)
.WithBasicAuth(_userName, _apiToken)
.HttpClient
.PostAsync(<uri>, <content>);

最佳答案

XML 支持尚未内置,但这是 logged这是我希望为 Flurl.Http 1.0 保留的少数功能之一。 (令人惊讶的是,到目前为止还没有人提出要求。)

同时,Flurl is pretty easy to extend ,您可以通过扩展方法自己添加此支持。这应该是您流畅地发布 XML 字符串所需的全部内容:

public static class FlurlXmlExtensions
{
// chain off an existing FlurlClient:
public static async Task<HttpResponseMessage> PostXmlAsync(this FlurlClient fc, string xml) {
try {
var content = new CapturedStringContent(xml, Encoding.UTF8, "application/xml");
return await fc.HttpClient.PostAsync(fc.Url, content);
}
finally {
if (AutoDispose)
Dispose();
}
}

// chain off a Url object:
public static Task<HttpResponseMessage> PostXmlAsync(this Url url, string xml) {
return new FlurlClient(url, true).PostXmlAsync(xml);
}

// chain off a url string:
public static Task<HttpResponseMessage> PostXmlAsync(this string url, string xml) {
return new FlurlClient(url, true).PostXmlAsync(xml);
}
}
<小时/>

更新:

我决定不在 Flurl 中包含 XML 支持,主要是因为社区成员挺身而出并为其创建了一个出色的扩展库:

https://github.com/lvermeulen/Flurl.Http.Xml

关于c# - 如何使用 FluUrl 执行 XML POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28970969/

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