如何使用httpWebRequest正确发送json



我有一个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";

然后我想把json数据发送到这个URL。经过尝试,我认为我做错了,但我不明白它是什么…以下是我发送数据的地方:

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);
}
});

从您在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);

EDIT:注意,在您发布的上一个问题中,您试图发送"{ data: [1] }",但这是不正确的,它应该是"{ "data": [1] }",但最好坚持使用具有正确结构的类,并让序列化程序处理这些实现细节。

相关内容

  • 没有找到相关文章

最新更新