我想在c#中发送POST请求,我需要通过
发送以下内容"jsonrpc": "2.0",
"id": "12345",
"method": "my method",
"params": {
"api_key": "my api key",
"preset_id": "my preset id"
}
我尝试使用
using (WebClient client = new WebClient ())
{
byte [] response =
client.UploadValues ("my url", new NameValueCollection ()
{
{ "jsonrpc", "2.0" },
{ "id", "12345"},
{ "method", "my method"},
{ "params", ""}
});
string result = System.Text.Encoding.UTF8.GetString (response);
}
但是我无法将params作为一个数组,请帮助,谢谢
答案 0 :(得分:0)
您似乎要求参数在数组中,但它们实际上显示为"子类"。如果值在数组中,则它们应该有方括号。
然而,使用匿名(或实际)类很容易实现这两个结果(我更喜欢在引用文本中嵌入属性名称(使未来的修改更容易实现)。
var parameters = new
{
api_key = "my api key",
preset_id = "my preset id"
};
var json = new
{
jsonrpc = "2.0",
id = "12345",
method = "my method",
@params = parameters
};
string sResult = (new System.Web.Script.Serialization.JavaScriptSerializer()).Serialize(json);
上面的代码将产生您显示的相同输出。如果您想要一个实际的数组,可以将参数定义更改为:
var parameters = new NameValueCollection();
parameters.Add("api_key", "my api key");
parameters.Add("preset_id", "my preset id");
请注意,我使用了.Net框架json序列化程序(来自System.Web.Extensions),但您可以使用您选择的序列化程序(我们通常使用NewtonSoft的JsonConvert)。