[解決済み] HTTP POST Web リクエストの作成方法
質問内容
<ブロッククオート
正準
を使用してHTTPリクエストを行い、いくつかのデータを送信するにはどうすればよいですか?
POST
メソッドを使用できますか?
をすることができますね。
GET
をリクエストすることはできますが、どのようにして
POST
をリクエストしてください。
解決方法は?
HTTPを実行するには、いくつかの方法があります。
GET
と
POST
のリクエストに対応します。
方法A。HttpClient (推奨)
で利用可能です。
.NET Framework 4.5+
,
.NET Standard 1.1+
,
.NET Core 1.0+
.
現在ではこの方法が推奨されており、非同期で高性能である。ほとんどの場合、組み込みバージョンを使用しますが、非常に古いプラットフォームには NuGetパッケージ .
using System.Net.Http;
セットアップ
推奨
を1つインスタンス化し
HttpClient
をアプリケーションのライフタイムに使用し、共有しない特別な理由がない限り、共有します。
private static readonly HttpClient client = new HttpClient();
参照
HttpClientFactory
には
依存性注入
の解決策になります。
-
POST
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();
-
GET
var responseString = await client.GetStringAsync("http://www.example.com/recepticle.aspx");
方法B:サードパーティライブラリ
-
POST
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;
-
POST
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
-
POST
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();
-
GET
var request = (HttpWebRequest)WebRequest.Create("http://www.example.com/recepticle.aspx"); var response = (HttpWebResponse)request.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
方法D.ウェブクライアント(新規制作にはお勧めしません)
このラッパーは
HttpWebRequest
.
と比較
HttpClient
.
で利用可能です。
.NET Framework 1.1+
,
NET Standard 2.0+
,
.NET Core 2.0+
using System.Net;
using System.Collections.Specialized;
-
POST
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); }
-
GET
using (var client = new WebClient()) { var responseString = client.DownloadString("http://www.example.com/recepticle.aspx"); }
関連
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み] enumを列挙するには
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] フォーム送信のようなJavaScriptのポストリクエスト
-
[解決済み] HTTP POSTリクエストでは、どのようにパラメータが送信されるのですか?
-
[解決済み] node.jsでHTTP POSTリクエストはどのように行われるのですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】Nullableオブジェクトは値を持たなければならない?