如何从c#执行curl命令?

如何从c#执行curl命令?,c#,libcurl,C#,Libcurl,我正在创建要从中执行curl命令的c#应用程序 以下是我的命令: curl -i -X POST -H "X-AUTH-TOKEN: xxxxxx" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"query":"show tables;", "command_type": "PrestoCommand"}' "https://azure.qubole.com/api/v2/clusters/"

我正在创建要从中执行curl命令的c#应用程序

以下是我的命令:

curl  -i -X POST -H "X-AUTH-TOKEN: xxxxxx" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"query":"show tables;", "command_type": "PrestoCommand"}' "https://azure.qubole.com/api/v2/clusters/"

我想从UI向curl命令传递参数。并且不想使用.bat或.exe文件选项。

有许多方法可以在不使用curl的情况下发送http请求

现在最常见的是
HttpClient

比如说,

// at the top of the file
using System.Net.Http;

using(var client = new HttpClient())
{
 client.DefaultRequestHeaders.Add("X-AUTH-TOKEN", "xxxxxx");

 var result = await client.PostAsync("https://azure.qubole.com/api/v2/clusters/", new StringContent("{\"query\":\"show tables;\", \"command_type\": \"PrestoCommand\"}", Encoding.UTF8);
 var responseJson = await result.Content.ReadAsStringAsync();
}
当您从c#开始时更新,如果您只是将其粘贴到
Program.cs
Main方法中,您将得到以下错误:

“await”运算符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法,并将其返回类型改为“任务”。

解决这个问题的一种方法是将上面的所有代码放入这样一个方法中

async Task DoWork()
{
 // my code above here
}
然后将其粘贴到
Main
方法:

DoWork().GetAwaiter().GetResult();

可能重复我尝试了这个错误,它抛出以下错误:“wait”操作符只能在异步方法中使用。考虑将此方法标记为“AsiNC”修饰符,并将其返回类型改为“任务”。这是因为您将其复制到主< /COD>方法中。启用c#7.1功能或将
wait
s更改为
.getwaiter().GetResult()