如何使用 System.Net.Http POST 二维对象
How to POST 2 dimensional objects using System.Net.Http
Whosebug 用户您好,
我目前正在尝试 POST 一些数据到我的 C# 项目中的 webhook。但是我 运行 遇到了一些问题,试图在字典中推送超过 1 维的对象。
我正在使用 C# 给定的方法:
private async void SendPOST(Dictionary<string, string> val)
{
var content = new FormUrlEncodedContent(val);
var restponse = await client.PostAsync("https://myWebServer.com/fakeaddress", content);
var responseString = await restponse.Content.ReadAsStringAsync();
Print("Respons: " + responseString);
}
当要求如下时,这对字典中的默认键值对非常有效:
"customer": "peter",
"bank": "global bank",
"value": "2000.00",
"currency": "USD",
"location": "Berlin"
但是 webhook 需要这样的东西:
"customer": "peter",
"bank": "global bank",
"accountData": {
"value": 2000.00,
"currency": "USD"
},
"location": "Berlin"
如何 POST 填写必填字段?
我确实尝试过简单地使用 stringbuilder 来欺骗自己并自己创建 JSON,但是 PostAsync 只接受内容对象,而 FormUrlEncodedContent 只接受简单的键值对。我在这里遗漏了什么吗?
edit1: 格式
您应该使用自定义对象而不是 Dictionary
public class AccountData{
public double Value {get; set;}
public string Currency {get; set;}
}
public class Account {
public string Customer {get; set;}
public string Bank {get; set;}
public AccountData AccountData {get; set;}
public string Location {get; set;}
}
然后你可以将对象序列化为 json 就这样。
然后改变
var content = new FormUrlEncodedContent(val);
到
var content = new StringContent(<yourserializedjson>, Encoding.UTF8, "application/json");
Whosebug 用户您好,
我目前正在尝试 POST 一些数据到我的 C# 项目中的 webhook。但是我 运行 遇到了一些问题,试图在字典中推送超过 1 维的对象。
我正在使用 C# 给定的方法:
private async void SendPOST(Dictionary<string, string> val)
{
var content = new FormUrlEncodedContent(val);
var restponse = await client.PostAsync("https://myWebServer.com/fakeaddress", content);
var responseString = await restponse.Content.ReadAsStringAsync();
Print("Respons: " + responseString);
}
当要求如下时,这对字典中的默认键值对非常有效:
"customer": "peter",
"bank": "global bank",
"value": "2000.00",
"currency": "USD",
"location": "Berlin"
但是 webhook 需要这样的东西:
"customer": "peter",
"bank": "global bank",
"accountData": {
"value": 2000.00,
"currency": "USD"
},
"location": "Berlin"
如何 POST 填写必填字段? 我确实尝试过简单地使用 stringbuilder 来欺骗自己并自己创建 JSON,但是 PostAsync 只接受内容对象,而 FormUrlEncodedContent 只接受简单的键值对。我在这里遗漏了什么吗?
edit1: 格式
您应该使用自定义对象而不是 Dictionary
public class AccountData{
public double Value {get; set;}
public string Currency {get; set;}
}
public class Account {
public string Customer {get; set;}
public string Bank {get; set;}
public AccountData AccountData {get; set;}
public string Location {get; set;}
}
然后你可以将对象序列化为 json 就这样。
然后改变
var content = new FormUrlEncodedContent(val);
到
var content = new StringContent(<yourserializedjson>, Encoding.UTF8, "application/json");