我正在尝试将 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"
});
}
除了Nouman Bhatti在评论中建议的内容之外——定义服务中的数量类以及更新服务的 POST 方法签名以期望该对象——还使用[FromBody]
属性
班级
new Amount
{
currencyCode = "EUR",
amount = 1234
}
新的 POST 方法签名
[HttpPost]
public JsonResult Test([FromBody]Amount amount)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句