Я пытаюсь передать строку Json в качестве параметра для HttpWebRequest вместе с URL-адресом. Запрос ударит по методам нормально, но каждый раз параметры равны нулю. Я пытался следовать многим подобным примерам, но безуспешно: Как отправить данные JSON в POST-запросе с использованием 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;
}
Вот метод, который получает правильное попадание, но с нулевыми параметрами как для currencyCode, так и для суммы.
[HttpPost]
public JsonResult Test(string currencyCode, string amount)
{
return Json(new
{
Test = "It worked"
});
}