HTTPを作成するにはどうすればいいですか?役職本文でデータを要求して送信しますか?
ベストアンサー1
HTTPを実行する方法はいくつかある得るそして役職リクエスト:
方法 A: HttpClient (推奨)
利用可能なバージョン: .NET Framework 4.5 以降、.NET Standard 1.1 以降、および .NET Core 1.0 以降。
これは現在推奨されているアプローチであり、非同期で高性能です。ほとんどの場合は組み込みバージョンを使用しますが、非常に古いプラットフォームの場合はNuGet パッケージ。
using System.Net.Http;
設定
それをお勧めしますHttpClient
特別な理由がない限り、アプリケーションの存続期間中にインスタンスを 1 つ作成し、共有します。
private static readonly HttpClient client = new HttpClient();
見るHttpClientFactory
のために依存性注入解決。
役職
var 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();
得る
var responseString = await client.GetStringAsync("http://www.example.com/recepticle.aspx");
方法 B: サードパーティのライブラリ
役職
var 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<Person>(request); var name = response2.Data.Name;
これは比較的新しい図書館で、流暢なAPI、テストヘルパー、内部でHttpClientを使用する、ポータブルなツールです。ヌゲット。
using Flurl.Http;
役職
var responseString = await "http://www.example.com/recepticle.aspx" .PostUrlEncodedAsync(new { thing1 = "hello", thing2 = "world" }) .ReceiveString();
GET
var responseString = await "http://www.example.com/recepticle.aspx" .GetStringAsync();
方法 C: HttpWebRequest (新規作業には推奨されません)
使用可能なバージョン: .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
役職
var 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();
得る
var request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx"); var response = (HttpWebResponse)request.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
方法 D: WebClient (新規作業には推奨されません)
これは のラッパーですHttpWebRequest
。と比べてHttpClient
。
利用可能なバージョン: .NET Framework 1.1+、NET Standard 2.0+、.NET Core 2.0+。
状況によっては (.NET Framework 4.5 ~ 4.8)、HTTP 要求を同期的に実行する必要がある場合でも、WebClient
引き続き使用できます。
using System.Net;
using System.Collections.Specialized;
役職
using (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); }
得る
using (var client = new WebClient()) { var responseString = client.DownloadString("http://www.example.com/recepticle.aspx"); }