【发布时间】:2018-05-07 23:24:43
【问题描述】:
我正在尝试将 Json 字符串作为 HttpWebRequest 的参数与 URL 一起传递。请求会很好地命中方法,但每次参数都是空的。我尝试过很多这样的例子,但没有成功:How to send json data in POST request using C#
这是将被序列化和传递的示例对象
Amount amount = new Amount
{
currencyCode = "EUR",
amount = 1234
}
string JsonParameters = amount.ToJson();
var result = Methods.ExecuteHttpPostRequestWithJson("http://localhost:51581/Home/Test", JsonParameters);
Json 参数正确序列化成
{"currencyCode":"EUR","amount":1234}
这是我尝试创建的方法。我尝试了多种方法,但每次都为空。
这里是要调用的方法
public static string ExecuteHttpPostRequestWithJson(string URL, string Json)
{
string result = "";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{;
streamWriter.Write(Json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
return result;
}
这是正确命中的方法,但货币代码和金额的参数均为空。
[HttpPost]
public JsonResult Test(string currencyCode, string amount)
{
return Json(new
{
Test = "It worked"
});
}
【问题讨论】:
-
您正在用 javascript 创建一个对象。尝试在 c# 中使用currencyCode 和amount 创建一个类,并将该类的对象用作函数中的参数
-
我试过了,我得到 currencyCode = null 和 amount = 0