一尘不染

在C#中进行cURL调用

c#

我想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调用?


阅读 1979

收藏
2020-05-19

共1个答案

一尘不染

好吧,您不会直接调用cURL,而是使用以下选项之一:

我强烈建议使用HttpClient该类,因为从可用性的角度出发,该类的设计要比前两者更好。

对于您的情况,您可以这样做:

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与前面提到的选项相比,该类对处理不同的响应类型有更好的支持,并且对异步操作(以及取消了它们)有更好的支持。

2020-05-19