首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flurl阵列编码

Flurl阵列编码
EN

Stack Overflow用户
提问于 2019-02-04 14:07:50
回答 1查看 997关注 0票数 4

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

这样做:

代码语言:javascript
复制
   .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供应商抱怨我发布的数组无效。当我这么做时:

代码语言:javascript
复制
    .PostUrlEncodedAsync(
             "amount=1000&allowed_source_types[]=card_present&capture_method=manual&currency=usd"
    );

公布的结果如下:

amount=1000&allowed_source_types[]=card_present&capture_method=manual¤cy=usd

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

问题:这是一个错误吗? allowed_source_types参数是否包含了 ,就像最初详细的这里

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-04 15:31:52

这不是窃听器。正如注释中提到的,没有URL编码集合的标准,但是这样做:

代码语言:javascript
复制
x[]=1,2,3

比这样做要少见得多:

代码语言:javascript
复制
x=1&x=2&x=3

后者是Flurl是如何实现它的

按照API所要求的方式这样做的问题是,[]在C#标识符中无效,因此典型的对象表示法无法工作。但是Flurl对Dictionary对象给予了特殊的处理,所以最好的方法是这样做:

代码语言:javascript
复制
.PostUrlEncodedAsync(new Dictionary<string, object>
{
    ["amount"] = 1000,
    ["allowed_source_types[]"] = "card_present", // or string.Join(",", allowedSourceTypes)
    ["capture_method"] = "manual",
    ["currency"] = "usd"
 });
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54517947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档