1. ホーム
  2. c#

[解決済み] C#でcURLを呼び出す

2022-02-01 07:36:06

質問

次のようなものを作りたい。 curl を C# コンソールアプリケーションで呼び出します。

curl -d "text=This is a block of text" \
    http://api.repustate.com/v2/demokey/score.json

投稿された質問のようにしようとしたのですが ここで しかし、プロパティを正しく埋めることができません。

また、通常のHTTPリクエストに変換してみました。

http://api.repustate.com/v2/demokey/score.json?text="This%20is%20a%20block%20of%20text"

cURLの呼び出しをHTTPリクエストに変換することはできますか? もし可能なら、どのように? そうでない場合、C#コンソールアプリケーションから上記のcURL呼び出しを適切に行うにはどうしたらよいでしょうか?

どのように解決するのですか?

さて、あなたは cURL を直接使用するのではなく、以下のオプションのいずれかを使用します。

を使うことを強くお勧めします。 HttpClient クラスは、前の2つよりも(使い勝手の面で)ずっと良くなるように設計されています。

あなたの場合、こうなりますね。

using System.Net.Http;

var client = new HttpClient();

// Create the HttpContent for the form to be posted.
var requestContent = new FormUrlEncodedContent(new [] {
    new KeyValuePair<string, string>("text", "This is a block of text"),
});

// Get the response.
HttpResponseMessage response = await client.PostAsync(
    "http://api.repustate.com/v2/demokey/score.json",
    requestContent);

// Get the response content.
HttpContent responseContent = response.Content;

// Get the stream of the content.
using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync()))
{
    // Write the output.
    Console.WriteLine(await reader.ReadToEndAsync());
}

また HttpClient クラスは、さまざまなレスポンスタイプを処理するためのよりよいサポートと、 前述のオプションよりも優れた非同期操作 (とそのキャンセル) のサポートを持っています。