gpt4 book ai didi

c# - Flurl 阵列编码

转载 作者:行者123 更新时间:2023-11-30 15:52:27 29 4
gpt4 key购买 nike

我试图将一些包含字符串数组的数据发布到端点,但收到错误“无效数组”

这样做:

   .PostUrlEncodedAsync(new
{
amount = 1000,
allowed_source_types = new[] { "card_present" },
capture_method = "manual",
currency = "usd"
});

发布的结果:

amount=1000&allowed_source_types=card_present&capture_method=manual&currency=usd

API 供应商提示我发布的数组无效。当我这样做时:

    .PostUrlEncodedAsync(
"amount=1000&allowed_source_types[]=card_present&capture_method=manual&currency=usd"
);

发布的结果:

amount=1000&allowed_source_types[]=card_present&capture_method=manual&currency=usd

API 供应商很高兴,我得到了预期的结果。

问题:这是一个错误吗?allowed_source_types 参数是否应该包含最初详细说明的 [ ] here

最佳答案

这不是错误。正如评论中提到的,没有标准的 URL 编码集合,但这样做是这样的:

x[]=1,2,3

比这样做要少得多:

x=1&x=2&x=3

后者是how Flurl has implemented it .

按照 API 要求的方式进行操作的麻烦在于 [] 在 C# 标识符中无效,因此典型的对象表示法将不起作用。但是 Flurl 对 Dictionary 对象给予特殊处理,所以最好的办法是这样做:

.PostUrlEncodedAsync(new Dictionary<string, object>
{
["amount"] = 1000,
["allowed_source_types[]"] = "card_present", // or string.Join(",", allowedSourceTypes)
["capture_method"] = "manual",
["currency"] = "usd"
});

关于c# - Flurl 阵列编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54517947/

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