我正在尝试向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=="
}
感谢任何帮助。谢谢。此外,由于解决方案设计约束,我必须使用它,而不是其他任何东西。
在你的字符串文字中,你调用了变量DateAndTimeOfIssue
,但在对象中调用了DataAndTimeOfIssue
。这可能会导致错误。此外,变量IT
的类型从字符串变为整数。这应该不是问题,因为int可以强制转换为字符串,但我建议你使用相同的类型。
webservice是否支持GTIN
数组中的变量Discount
和Items
?