web-dev-qa-db-ja.com

C#でWebClient.DownloadStringを使用してPOST

HTTP POSTリクエストをC#で送信することについて多くの質問があることは知っていますが、WebClientではなくHttpWebRequestを使用するメソッドを探しています。これは可能ですか?WebClientクラスはとても使いやすいので、それは素晴らしいことです。

Headersプロパティを設定して特定のヘッダーを設定できることは知っていますが、実際にPOST from WebClientを実行できるかどうかはわかりません。

14
PorkWaffles

WebClient.UploadData() を使用できます。これはHTTP POSTを使用します。

_using (WebClient wc = new WebClient())
{
    byte[] result = wc.UploadData("http://stackoverflow.com", new byte[] { });
}
_

指定したペイロードデータは、リクエストのPOST本文として送信されます。

または、HTTP POSTを介して名前と値のコレクションをアップロードする WebClient.UploadValues() があります。

14
BrokenGlass

HTTP 1.0POSTでUploadメソッドを使用できます

string postData = Console.ReadLine();

using (System.Net.WebClient wc = new System.Net.WebClient())
{
    wc.Headers.Add("Content-Type","application/x-www-form-urlencoded");
    // Upload the input string using the HTTP 1.0 POST method.
    byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postData);
    byte[] byteResult= wc.UploadData("http://targetwebiste","POST",byteArray);
    // Decode and display the result.
    Console.WriteLine("\nResult received was {0}",
                      Encoding.ASCII.GetString(byteResult));
}
7
Turbot