如何使用httpWebRequest正确发送json?

时间:2017-01-31 17:15:25

标签: c# httpwebrequest

我有一个httpWebRequest对象。

它初始化如下:

        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://myURL.com"); // This is actually my company URL I can't show
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";

然后我想发送到这个URL json数据。经过尝试,我认为我做错了,但我不知道它是什么......这是我发送数据的地方:

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            List<string> datas = new List<string>();
            datas.Add("1");


            string json = Newtonsoft.Json.JsonConvert.SerializeObject(datas);

            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }

它似乎不起作用。有没有办法捕获我发送的URL?我试过Fiddler,但我没有看到我的要求。

此代码也适用于Chrome控制台:

jQuery.ajax({
                'url': 'http://myURL.com',  
                'type': 'POST',
                'data': {data:[7]},
                'success': function (data) {
                    console.log(data);
                }
            });

1 个答案:

答案 0 :(得分:1)

根据您在Chrome上使用的代码,表示您的数据结构不正确。

首先,您需要一个类来存储数据,我们称之为DataHolder:

public class DataHolder
{
    public int[] data { get; set; }
}

所以现在你需要填写它:

var newData = new DataHolder{ data = new int[] { 1 } };

现在你可以序列化它,它应该可以工作:

string json = Newtonsoft.Json.JsonConvert.SerializeObject(newData);

编辑:作为一个注释,在您发布的上一个问题中,您试图发送"{ data: [1] }"这是不正确的,它应该是"{ \"data\": [1] }"但更好地坚持使用正确结构的类并让序列化器处理这些实施细节。