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 メソッドが呼び出されますが、status パラメータは常に空白になります。一方、パラメーターとして json 文字列 {status:"success",payload:"some information"} が必要です。

私は何を間違っていますか?

PS:実際のコンテンツを送信しながら、以下のステートメントも試しました。

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

よろしく、M

4

3 に答える 3

0

リクエストはjsonだと言っているようですが、wwwencodingを使用して送信しています。

ラインビットを削除しstatus={0}、jsonをそのまま送信します。

于 2013-03-13T16:12:22.697 に答える
0

代わりに、MVCトライアウトWebApiから何らかのサービスを提供する必要がある場合。HTTPRESTを使用してこれを簡単に行うことができます。

詳細はこちらASP.NETWebApi

于 2013-03-13T15:43:47.230 に答える
0

このようなものを試すことができます

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