如何发出HTTP POST Web请求
Canonical
POST
我可以GET提出请求,但是我不知道如何提出POST请求。
回答:
有几种执行HTTPGET和POST请求的方法:
回答:
可用:.NET Framework 4.5+,.NET Standard 1.1+,.NET Core 1.0+。
目前,它是首选方法,并且具有异步性和高性能。在大多数情况下,请使用内置版本,但对于非常旧的平台,则提供了NuGet软件包。
using System.Net.Http;设定
建议HttpClient在应用程序的生命周期中实例化一个实例,并共享它,除非您有特殊原因不这样做。
private static readonly HttpClient client = new HttpClient();请参阅HttpClientFactory以获取依赖项注入解决方案。
POSTvar values = new Dictionary<string, string>{
{ “thing1”, “hello” },
{ “thing2”, “world” }
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync("http://www.example.com/recepticle.aspx”, content);
var responseString = await response.Content.ReadAsStringAsync();
GETvar responseString = await client.GetStringAsync("http://www.example.com/recepticle.aspx");
回答:
POSTvar client = new RestClient("http://example.com");// client.Authenticator = new HttpBasicAuthenticator(username, password);
var request = new RestRequest(“resource/{id}”);
request.AddParameter(“thing1”, “Hello”);
request.AddParameter(“thing2”, “world”);
request.AddHeader(“header”, “value”);
request.AddFile(“file”, path);
var response = client.Post(request);
var content = response.Content; // Raw content as string
var response2 = client.Post
(request); var name = response2.Data.Name;
这是一个更新的库,具有流畅的API,测试助手,在后台使用HttpClient且可移植。可通过NuGet获得。
using Flurl.Http;POSTvar responseString = await "http://www.example.com/recepticle.aspx".PostUrlEncodedAsync(new { thing1 = "hello", thing2 = "world" })
.ReceiveString();
GETvar responseString = await "http://www.example.com/recepticle.aspx".GetStringAsync();
回答:
可用:.NET Framework 1.1+,.NET Standard 2.0+,.NET Core 1.0+。在.NET
Core中,它主要是为了兼容性-它可以包装HttpClient,性能较低且不会获得新功能。
using System.Net;using System.Text; // For class Encoding
using System.IO; // For StreamReader
POSTvar request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx");var postData = “thing1=” + Uri.EscapeDataString(“hello”);
postData += “&thing2=” + Uri.EscapeDataString(“world”);
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();
GETvar request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx");var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
回答:
这是一个包装HttpWebRequest。与比较HttpClient。
可在:.NET Framework 1.1+,NET Standard 2.0+,.NET Core 2.0+
using System.Net;using System.Collections.Specialized;
POSTusing (var client = new WebClient()){
var values = new NameValueCollection();
values[“thing1”] = “hello”;
values[“thing2”] = “world”;
var response = client.UploadValues("http://www.example.com/recepticle.aspx", values);var responseString = Encoding.Default.GetString(response);
}
GETusing (var client = new WebClient()){
var responseString = client.DownloadString("http://www.example.com/recepticle.aspx”);
}
以上是 如何发出HTTP POST Web请求 的全部内容, 来源链接: utcz.com/qa/423030.html
