FormUrlEncodedContent发送对象列表/路由,不反序列化

时间:2019-07-09 21:57:37

标签: c# json http

我正在尝试将请求发布到路线,但是我的参数之一被删除了。

我一直在尝试通过多种方式发送这样的请求,但是我似乎无法完全确定或了解正在发生的事情。作为参考,这是我发送的url编码内容:

        private FormUrlEncodedContent GeneratePaymentConent(Claim[] claims, bool areChagesSigned, decimal? allowableAmount)
        {
            var content = new Dictionary<string, string>
            {
                {"claims", JsonConvert.SerializeObject(claims)},
                { "isReversal", JsonConvert.SerializeObject(areChagesSigned)},
                { "allowableAmount", JsonConvert.SerializeObject(allowableAmount)}
            };
            return new FormUrlEncodedContent(content);
        }

异步请求如下:

await _httpClient.RequestAsync(GeneratePaymentRoute,
                HttpMethod.Post,
                generatedPaymentContent,
                new[] { new KeyValuePair<string, string>("user-agent", ChromeUserAgent) }
                );

路线如下:

<HttpPost>
   Public Function GenerateInsurerPaymentForClaims(claims As IEnumerable(Of Claim),
                                                   Optional areClaimsAutoForwarded As Boolean = False,
                                                   Optional adjustmentCodes As String = Nothing,
                                                   Optional skipFirstClaimAdjustments As Boolean = False,
                                                   Optional isReversal As Boolean = False,
                                                   Optional allowableAmount? As Decimal = Nothing) As JsonResult

正在读取/反序列化allowableAmount和isReversal的参数时,声明的内容为空。

我缺少明显的东西吗?

编辑:意识到我没有显示,但是请求方的声明是:

claims = new Claim[] { claim }

1 个答案:

答案 0 :(得分:0)

当您的路线期望Claim时,您似乎在GeneratePaymentContent中传递了一个IEnumerable<Claim>

这将导致路由器在反序列化时返回null

我假设您的请求中generatedPaymentContent的值是GeneratePaymentContent()的返回值。

相关问题