C# 如何使用HttpWebRequest发布数据?
我有这个C# 如何使用HttpWebRequest发布数据?,c#,xamarin,httpwebrequest,httprequest,C#,Xamarin,Httpwebrequest,Httprequest,我有这个HttpWebRequest: var request = HttpWebRequest.Create("http://example.com/api/Phrase/GetJDTO"); request.ContentType = "application/json"; request.Method = "POST"; 但我需要向请求主体添加一个负载,如下所示: Jlpt = 2 有人能帮我一下,告诉我如何向帖子添加数据吗?你可以这样做 var request = HttpWebRe
HttpWebRequest
:
var request = HttpWebRequest.Create("http://example.com/api/Phrase/GetJDTO");
request.ContentType = "application/json";
request.Method = "POST";
但我需要向请求主体添加一个负载,如下所示:
Jlpt = 2
有人能帮我一下,告诉我如何向帖子添加数据吗?你可以这样做
var request = HttpWebRequest.Create("http://example.com/api/Phrase/GetJDTO");
var postData = "Jlpt = 2";
var data = Encoding.ASCII.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
但是在这种情况下,我建议您使用HttpClient
而不是HttpWebRequest
if (data != null)
{
request.ContentType = "application/json";
using (var stream = new StreamWriter(request.GetRequestStream()))
{
var serialized = JsonConvert.SerializeObject(data);
stream.Write(serialized);
}
}
else
{
request.ContentLength = 0;
}
如果数据是要发送的任何对象,请使用
HttpClient
而不是HttpWebRequest
。它有一个更现代、异步的API,以及一种更直接的向请求添加有效负载的方法。非常感谢。您能解释一下为什么建议使用HttpClient吗?有什么区别?谢谢。你可以在这篇文章中找到更多细节