如何使用 httpWebRequest 正确发送 json?
How to correctly send json with 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";
那我要发给这个URLjson数据。尝试后,我发现我做错了,但我不明白它是什么......这是我发送数据的地方:
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 处使用的代码,表明您的数据结构不正确。
首先,你需要一个class来存储数据,我们称它为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] }"
但最好坚持使用 class正确的结构并让序列化程序处理这些实现细节。
我有一个 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";
那我要发给这个URLjson数据。尝试后,我发现我做错了,但我不明白它是什么......这是我发送数据的地方:
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 处使用的代码,表明您的数据结构不正确。
首先,你需要一个class来存储数据,我们称它为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] }"
但最好坚持使用 class正确的结构并让序列化程序处理这些实现细节。