序列化要传递给String内容的JSON对象不起作用,但String Literal在发送POST请求时有效(错误400)

问题描述 投票:0回答:1

我正在尝试向Web服务发送POST请求。我能够在控制台应用程序中成功执行此操作,并使用虚拟请求字符串文字。但是,当我尝试使用jsonConvert序列化我的对象,并将其作为请求发送时,服务器响应“400”错误请求。

我的字符串文字:

            string invoiceRequest = @"{
""DateAndTimeOfIssue"": ""2017-06-15T08:56:23.286Z"",
""Cashier"": ""Oliver"",
""IT"": 3,
""TT"": 0,
""PaymentType"": ""Cash"",
""InvoiceNumber"": ""POS2017/998"",
""ReferentDocumentNumber"": ""ABCD1234-EFGH5678-198"",
""ReferentDocumentDateAndTime"": ""2017-06-07T09:33:52.187Z"",
""PAC"":""11111"",
    ""Options"":{
        ""OmitQRCodeGen"": ""1"",
        ""OmitTextualRepresentation"": ""1""},
     ""Items"": [{
        ""Name"": ""Sport-100 Helmet, Blue"",
        ""Quantity"": 2.0,
        ""UnitPrice"": 34.23,
        ""Labels"": [""A""],
        ""TotalAmount"": 68.46},
        {
        ""Name"": ""Sport-100 Helmet, Blue"",
        ""Quantity"": 2,
        ""UnitPrice"": 34.23,
        ""Labels"": [""A""],
        ""TotalAmount"": 68.46}],
""Hash"": ""W33lEEgkSRsqTFMO86a8Og==""}";

我的代码:

    HttpContent httpContent = new StringContent(invoiceRequest, Encoding.UTF8, "application/json");
    HttpClient client;
    HttpClientHandler handler;
    GetClientAndHandler(out handler, out client);
    var response = client.PostAsync($"api/Sign/SignInvoice", httpContent).Result;

以上工作正常。但是,现在我想这样做:

HttpContent httpContent = new StringContent((JsonConvert.SerializeObject(this).ToString()), Encoding.UTF8, "application/json");

出于某种原因,上述方法不起作用(即使我删除了ToString())。下面是我将JsonConvert.SerializeObject(this)输出到文件时得到的结果。

{
    "DataAndTimeOfIssue": "2017-06-15T08:56:23.286Z",
    "Cashier": "Kushal",
    "IT": "Training",
    "TT": "Sale",
    "PaymentType": "Cash",
    "InvoiceNumber": "POS2017/998",
    "ReferentDocumentNumber": "ABCD1234-EFGH5678-198",
    "ReferentDocumentDateAndTime": "2017-06-07T09:33:52.187Z",
    "PAC": "11111",
    "Options": {
        "OmitQRCodeGen": "1",
        "OmitTextualRepresentation": "0"
    },
    "Items": [{
        "GTIN": "Item 1",
        "Name": "Smokes",
        "Quantity": 3.0,
        "UnitPrice": 11.0,
        "Discount": 0.0,
        "Labels": ["A"],
        "TotalAmount": 30.0
    }, {
        "GTIN": "Item 2",
        "Name": "Smokes",
        "Quantity": 3.0,
        "UnitPrice": 0.0,
        "Discount": 0.0,
        "Labels": ["A"],
        "TotalAmount": 30.0
    }],
    "Hash": "W33lEEgkSRsqTFMO86a8Og=="
}

感谢任何帮助。谢谢。此外,由于解决方案设计约束,我必须使用它,而不是其他任何东西。

c# json.net .net-standard
1个回答
3
投票

在你的字符串文字中,你调用了变量DateAndTimeOfIssue,但在对象中调用了DataAndTimeOfIssue。这可能会导致错误。此外,变量IT的类型从字符串变为整数。这应该不是问题,因为int可以强制转换为字符串,但我建议你使用相同的类型。

webservice是否支持GTIN数组中的变量DiscountItems

© www.soinside.com 2019 - 2024. All rights reserved.