我试图将包含字符串数组的一些数据发布到端点,但收到错误“无效数组”。
这样做:
.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¤cy=usd
API供应商抱怨我发布的数组无效。当我这么做时:
.PostUrlEncodedAsync(
"amount=1000&allowed_source_types[]=card_present&capture_method=manual¤cy=usd"
);公布的结果如下:
amount=1000&allowed_source_types[]=card_present&capture_method=manual¤cy=usd
API供应商很高兴,我得到了预期的结果。
问题:这是一个错误吗? allowed_source_types参数是否包含了 ,就像最初详细的这里
发布于 2019-02-04 15:31:52
这不是窃听器。正如注释中提到的,没有URL编码集合的标准,但是这样做:
x[]=1,2,3比这样做要少见得多:
x=1&x=2&x=3后者是Flurl是如何实现它的。
按照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"
});https://stackoverflow.com/questions/54517947
复制相似问题