【问题标题】:how to send POST json from C# to asp.net web api如何将 POST json 从 C# 发送到 asp.net web api
【发布时间】:2014-07-14 06:25:52
【问题描述】:

如何从 C# 向 ASP.Net web api 发出 POST 请求。 我已经使用 Newtonsoft dll 文件创建了 json,但是我无法将它发送到 api。

我的代码是:

        Login login = new Login
        {
            userid = username.Text,
            pass = pass.Text
        };
        string json = JsonConvert.SerializeObject(login, Formatting.Indented);

如何将此 json 发送到 web api,并获得响应?

编辑

string url = "myurl";


        var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        httpWebRequest.ContentType = "application/json; charset=utf-8";
        httpWebRequest.Method = "POST";
        httpWebRequest.Accept = "application/json; charset=utf-8";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {

            json = json.Replace("\r\n","");
            //json = json.Replace("\",", "\","   + "\"" +"\u002B");
            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
            pass.Text = result.ToString();
        }

【问题讨论】:

  • 我会使用WebClient。 StackOverflow 上有大量如何使用它的示例。它比HttpWebRequest涉及的更少

标签: c# asp.net json


【解决方案1】:

我做了一些修改,使它工作。我没有直接序列化 json 对象,而是使用了一个类,并为其赋值,并使用 JavaScriptSerializer 对其进行序列化。感谢您的帮助 Shekhar。

        var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        httpWebRequest.ContentType = "application/json; charset=utf-8";
        httpWebRequest.Method = "POST";
        httpWebRequest.Accept = "application/json; charset=utf-8";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string loginjson = new JavaScriptSerializer().Serialize(new
            {
                userid = username.Text,
                password = pass.Text
            });

            streamWriter.Write(loginjson);
            streamWriter.Flush();
            streamWriter.Close();

            var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                var result = streamReader.ReadToEnd();
                pass.Text = result.ToString();
            }
        }

【讨论】:

    【解决方案2】:

    您可以使用HttpWebRequest 类创建一个请求并使用StreamWriter 将请求写入您的Json,最后从Web API 获取HttpWebResponse。

    var httpWebRequest = (HttpWebRequest)WebRequest.Create("path/api");
    httpWebRequest.ContentType = "text/json";
    httpWebRequest.Method = "POST";
    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {
       streamWriter.Write(json);
       streamWriter.Flush();
    }
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    

    【讨论】:

    • 我已经这样做了。但我没有收到错误的成功消息。请查看编辑。
    • Success:false 是我以前收到的消息。我让它工作了。我将其发布为答案。
    猜你喜欢
    • 2018-08-21
    • 2020-11-19
    • 2016-11-21
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多