使用HttpwebRequest调用MVC HttpPost方法(带参数)

本文关键字:参数 方法 HttpPost HttpwebRequest 调用 MVC 使用 | 更新日期: 2023-09-27 18:03:39

我有以下MVC方法:

    [System.Web.Mvc.HttpPost]
    public ActionResult Listen(string status)
    {
        CFStatusMessage statusMessage = new CFStatusMessage();
        if (!string.IsNullOrEmpty(status))
        {
            statusMessage = Newtonsoft.Json.JsonConvert.DeserializeObject<CFStatusMessage>(status);
        }
        return Content(Server.HtmlEncode(status));// View(statusMessage);
    }

我正在尝试从其他应用程序调用上面的方法。(控制台)。我使用HttpWebRequest来调用MVC方法。使用下面的代码可以调用方法,但是Parameter总是以空字符串的形式出现。

        string content = "{'"status'":'"success'",'"payload'":'"some information'"}";
        string url = "http://myrl.com";
        var httpWRequest = (HttpWebRequest) WebRequest.Create(url);
        httpWRequest.Method = "POST";
        httpWRequest.ContentType = "text/json";
        var encoding = new ASCIIEncoding();
        byte[] data = encoding.GetBytes(string.Format("status={0}", Uri.EscapeDataString(content)));
        httpWRequest.ContentLength = data.Length;
        Stream stream = httpWRequest.GetRequestStream();
        stream.Write(data, 0, data.Length);
        var response = (HttpWebResponse)httpWRequest.GetResponse();

这样它就调用了Listen方法,但是状态参数总是为空。而我想要json字符串{status:"success",payload:"some information"}作为参数。

我做错了什么?

注::在发送实际内容的同时,我也尝试了下面的语句。

byte[] data = encoding.GetBytes(content);

问候,M

使用HttpwebRequest调用MVC HttpPost方法(带参数)

如果您需要从MVC中提供任何类型的服务,请尝试使用WebApi。您可以使用HTTP REST轻松地做到这一点。

在这里阅读更多。净WebApi

您似乎在说请求是json,但使用wwwencoding发送它。

去掉status={0}线位&按原样发送json即可

你可以试试这样

using (var sw = new StreamWriter(httpWRequest.GetRequestStream()))
{
    sw.Write(content);
    sw.Flush();
    sw.Close();
}