[英]c# dictionary as a value of a hashtable
我必须编写一些C#控制台应用程序(但我对.NET的知识几乎为NULL)才能向PHP API发出POST请求,为此我正在使用HttpClient实例。 API接受这样的JSON
{
"User": {
"email": "email@host.com",
"password": "something"
},
"Establishment": {
"id": 147
}
}
在对如何执行此操作进行了一些研究之后,到目前为止,我所做的是:
static async Task RunAsync()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://italdelo.web.development.co/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
// HTTP POST
Dictionary<string, string> user = new Dictionary<string, string>();
Dictionary<string, int> establishment = new Dictionary<string, int>();
HashTable postdata = new HashTable();
user.Add("email","email@host.com");
user.Add("password","something");
establishment.Add("id",147);
postdata.Add("User",user);
postdata.Add("Establishment",establishment);
HttpResponseMessage response = await client.PostAsJsonAsync("apiname/service", postdata);
response.EnsureSuccessStatusCode(); // Throw if not a success code.
}
catch (HttpRequestException e)
{
Console.WriteLine("Exception details: " + e.ToString());
}
}
}
运行此代码,我收到此错误消息:
Severity Code Description Project File Line Suppression State Error CS0246 The type or namespace name 'HashTable' could not be found (are you missing a using directive or an assembly reference?) ProjectName C:\Users\...\Program.cs 47 Active
我知道错误是我尝试设置JSON以发送到API的方式,这是一个包含值(哈希表的键值表示法)作为字典的哈希表。 我敢肯定这是愚蠢的,但我真的不知道如何为API设置此JSON,我别无选择,我需要使用C#。 您能帮助我,请给我一些有关如何解决此问题的建议,或者以其他方式解决此问题? 提前致谢。
您可以创建一个类,用作消费API的参数。
//you classes
public class Parameter
{
public User user { get; set;}
public Establishment {get; set;}
}
public class User
{
public string email {get; set;}
public string password {get; set}
}
public class Establishment
{
public int id {get;set;}
}
//在您的api调用方法中:
`var p = new Parameter
{
Establishment = new Establishment
{
id = 123
},
User = new User
{
email = "email",
password = "password"
}
};
HttpResponseMessage response = await client.PostAsJsonAsync("apiname/service", p);
使用C#匿名类
var payload = new{
User=new {
email= "email@host.com",
password= "something"
},
Establishment=new {
id= 147
}
}
然后使用newtonsoft json.net
var json = JsonConvert.SerializeObject(payload);
看起来像是一个错字,C#Hashtable不会大写中间的T:
https://msdn.microsoft.com/zh-CN/library/system.collections.hashtable(v=vs.110).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.