C# 如何将JSON Post从C中的WebClient上传到服务器?

C# 如何将JSON Post从C中的WebClient上传到服务器?,c#,json,http,post,webclient,C#,Json,Http,Post,Webclient,我有一个API url:https://faucetbox.com/api/v1/send 使用此API数据:金额=1&to=xxx&API_key=yyy 我得到了这个C代码: string JSON_WRITER(string url,string JSON) { string result=""; using (var client = new WebClient()) { result = client.UploadString(url, "POST", JSON); } return

我有一个API url:https://faucetbox.com/api/v1/send

使用此API数据:金额=1&to=xxx&API_key=yyy

我得到了这个C代码:

string JSON_WRITER(string url,string JSON)
{
string result="";
using (var client = new WebClient())
{
result = client.UploadString(url, "POST", JSON);
}
return result;
}
这就是所谓的:

JSON_WRITER("https://faucetbox.com/api/v1/send", "amount=1&   to=DSfPc8GkRGF3Xrp99gHQFFJ7hcFJCqkwYH&api_key=4VdBEIAQKPpZ4SWOhQLUMn7mMNVql")
但是它不起作用,并且会出现以下错误:

{"status":414,"message":"Missing or invalid parameters."}
有人能纠正语法错误吗?如果有,我对JSON没有太多经验,或者请帮我解决这个问题,谢谢


不过,不要担心API密钥,它不会显示私有信息

编辑:添加JSON序列化以构建JSON

 public class Data
 {
    public decimal Amount { get; set; }

    public string Api_Key { get; set; }

    public string To { get; set; }
 }
序列化代码:

string json = JsonConvert.SerializeObject(new Data { Amount = 1M, Api_Key = "Some key", To = "some destination" });
添加内容类型标题,如下所示

client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
JSON有效负载:

{"amount":1,"to":"DSfPc8GkRGF3Xrp99gHQFFJ7hcFJCqkwYH","api_key":"4VdBEIAQKPpZ4SWOhQLUMn7mMNVql"}
JSON规范可以在下面找到。

您需要立即更改API密钥,因为您刚刚将其泄露给公众。不,这是一个公共API密钥,别担心,它在文档中如何添加JSON负载,因为我的JSON变量是一个字符串,我需要更改它。您现在如何构造字符串?您是否计划用对象替换字符串?对于具有转义序列的字符串,可以使用字符串有效负载={\amount \:1,\to\:\DSfPc8GkRGF3Xrp99gHQFFJ7hcFJCqkwYH\,\api\u key\:\4vdbeiaqppz4swohqlumn7mmnvql\;首先,它不起作用,而且它看起来也没有效率。我有Newtonsoft.Json库,有没有更好的方法来使用它?当然,您可以使用Newtonsoft Json库,为您的数据使用具体的CLR类型。那将是最好的办法。因为您的问题是关于JSON格式的,所以我发布了您在问题中使用的URL编码字符串的JSON格式。使用JSON序列化更新了代码。希望这有帮助。