0

我有以下 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 方法。使用下面的代码可以调用该方法,但参数总是以空字符串的形式出现。

        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"} 作为参数。

我究竟做错了什么?

PS:我在发送实际内容时也尝试了以下语句。

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

问候,米

4

3 回答 3

0

如果您需要从 MVC 试用 WebApi 提供任何类型的服务。您可以使用 HTTP REST 轻松完成此操作。

在此处阅读更多内容ASP.NET WebApi

于 2013-03-13T15:43:47.230 回答
0

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

删除status={0}行位并按原样发送 json。

于 2013-03-13T16:12:22.697 回答
0

你可以试试这样的

using (var sw = new StreamWriter(httpWRequest.GetRequestStream()))
{
    sw.Write(content);
    sw.Flush();
    sw.Close();
}
于 2013-03-13T16:39:34.967 回答