GraphQL API无法识别从RestSharp客户端发送的布尔变量

时间:2019-09-13 12:47:18

标签: c# boolean graphql

我正在尝试调用GraphQL API来获取订单,但是布尔参数获取错误。我在做错什么吗?

我正在尝试向GraphQL API发送查询,但是在布尔参数中出了点问题,并且GraphQL返回错误:“ Variable \” $ imported \“的值无效\” 0 \“;期望的类型为Boolean ;无法将值表示为布尔值:0”。 我用过GraphIQL Feen!为了测试它,当我调用传递单词“ false”或“ true”(不带双引号)时,API返回正确,但是如果我尝试数字1或0(带或不带双引号),则会发生错误。 在代码中,我修改了序列化的json字符串,没错,“ imported”参数将false(无双引号的单词)作为值,这是必须的。因此我意识到在序列化对象之后,在RestSharp将其发送到API之前,该值更改为“ 0”。

C#调用API代码块:

public string Execute(string query, object variables = null, Dictionary<string, string> additionalHeaders = null, int timeout = 0)
{
            RestClient _client = CreateClient("=== API LINK ===");
            var request = new RestRequest("/", Method.POST);
            request.Timeout = timeout;

            if (additionalHeaders != null && additionalHeaders.Count > 0)
            {
                foreach (var additionalHeader in additionalHeaders)
                {
                    request.AddHeader(additionalHeader.Key, additionalHeader.Value);
                }
            }

            if (!string.IsNullOrEmpty(CallToken))
            {
                request.AddHeader("Authorization", "Bearer " + CallToken);
            }

            request.RequestFormat = DataFormat.Json;
            request.JsonSerializer = NewtonsoftJsonSerializer.Default;

            request.AddJsonBody(new
            {
                query = query,
                variables = variables
            });

            return _client.Execute(request).Content;
}

序列化的对象,在发送之前:

{"query":"query
(
$current_page: Int
$per_page: Int
$imported: Boolean
$industry_code: String
$order_code: Int
)
{
orders
(
current_page: $current_page
per_page: $per_page
imported: $imported
industry_code: $industry_code
order_code: $order_code
)
{
data {
                        id
                        order_code
                        industry_code
                        wholesaler_code
                        wholesaler_branch_code
                        customer_code
                        customer_alternative_code
                        customer_email
                        distribution_center_code
                        order_payment_term
                        commercial_condition_code
                        customer_order_code
                        profit_share_margin
                        is_free_good_discount
                        recalculates_discount
                        customer_code_type
                        indicator
                        salesman_code
                        sends_either_value_or_discount
                        sends_only_discount
                        additional_information
                        products {
                            ean
                            amount
                            discount_percentage
                            net_value
                            monitored
                            payment_term
                        }
                        status
                        responses {
                            id
                            content
                            imported_at
                            importation_status
                            importation_outcome
                            outcome
                            industry_code
                            order_code
                            wholesaler_order_code
                            wholesaler_branch_code
                            wholesaler_code
                            file_name
                            processed_at
                            invoice_at
                            delivery_forecast_at
                            consideration_code
                            payment_term
                            is_free_good_discount
                            products {
                                ean
                                invoice_ean
                                response_amount
                                unit_discount_percentage
                                unit_discount_value
                                unit_net_value
                                monitored
                                industry_consideration
                                wholesaler_consideration
                            }
                        }
                        invoices {
                            id
                            content
                            imported_at
                            importation_status
                            importation_outcome
                            outcome
                            industry_code
                            order_code
                            wholesaler_order_code
                            customer_code
                            wholesaler_branch_code
                            wholesaler_code
                            file_name
                            processed_at
                            released_on
                            reimbursement_values {
                                ean
                                value
                            }
                            products {
                                ean
                                invoice_amount
                                unit_discount_percentage
                                unit_discount_value
                                unit_net_value
                                icms_tax_calc_base
                                tax_substitution_icms_tax_calc_base
                                icms_percentage
                                ipi_percentage
                                icms_tax_value
                                tax_substitution_value
                                passed_along_icms_tax_value
                                payment_term
                                passed_along_value
                                total_value
                                total_value_with_taxes
                                financial_discount_percentage
                                financial_discount_value
                                cfop_code
                                tax_substitution_flag
                                positive_list_flag
                                classification
                                dcb_code
                                tax_substitution_code
                                type
                            }
                            taxes {
                                icms_tax_rate
                                icms_tax_calc_base
                                icms_tax_value
                            }
                            batches {
                                ean
                                batch
                                amount
                                expires_on
                            }
                            bank_tickets {
                                code
                                expires_on
                                value
                                issued_on
                                installment_value
                                anticipation_discount
                                interest_daily_rate
                                financial_discount
                                penalty
                                bank_code
                                bank_agency_code
                                bank_account
                                financial_discount_total_value
                            }
                            code
                            model
                            series
                            danfe_key
                            tax_substitution_icms_tax_calc_base
                            icms_tax_calc_base
                            value
                            discount
                            passed_along_icms_tax_value
                            products_total_value
                            ipi_tax_value
                            freight_value
                            insurance_value
                            volume_amount
                            icms_tax_total_value
                            icms_tax_retained_total_value
                            status
                        }
                        cancellations {
                            id
                            content
                            imported_at
                            importation_status
                            importation_outcome
                            outcome
                            industry_code
                            order_code
                            wholesaler_code
                            wholesaler_branch_code
                            entirely_cancelled
                            file_name
                            products {
                                ean
                            }
                        }
                    }
}
}
","variables":{"current_page":0,"per_page":1000,"imported":false,"industry_code":"","order_code":0}}

我希望将json中的布尔值作为没有双引号的单词发送,但是RestSharp的sendind为0并带有双引号。

PS:很抱歉写错了,我的英语说得不好。

修改

我解决了这个问题,显然是当您委托给RestSharp自己序列化一个Object时,他以自己的方式序列化了Object,他将布尔值更改为双引号内的布尔值,并且我读到其他类型也有问题。因此,基本上,您要做的就是在调用AddJsonBody方法之前对其进行序列化,然后传递已经序列化的参数,

赞:

 request.AddJsonBody(new
{
    query = query,
    variables = JsonConvert.SerializeObject(variables)
 });

0 个答案:

没有答案