我想在C#控制台应用程序中进行以下curl
调用:
curl -d "text=This is a block of text" \
http://api.repustate.com/v2/demokey/score.json
我试着做像问题张贴here,但我不能正确地填写属性。
我还尝试将其转换为常规HTTP请求:
http://api.repustate.com/v2/demokey/score.json?text="This%20is%20a%20block%20of%20text"
我可以将cURL调用转换为HTTP请求吗?如果可以,如何转换?如果不能,如何从我的C#控制台应用程序正确地进行上述cURL调用?
8条答案
按热度按时间sr4lhrrt1#
当然,您不会直接调用cURL,而是使用以下选项之一:
HttpWebRequest
/HttpWebResponse
系统WebClient
HttpClient
(从.NET 4.5开始可用)我强烈推荐使用
HttpClient
类,因为它的设计(从可用性的Angular 来看)比前两个更好。在您的情况下,可以执行以下操作:
还要注意,
HttpClient
类对处理不同的响应类型有更好的支持,并且比前面提到的选项更好地支持异步操作(以及取消异步操作)。zujrkrfu2#
或者在restSharp中:
ccgok5k53#
下面是一个工作示例代码。
请注意,您需要添加对Newtonsoft.json.linq的引用
参考:TheDeveloperBlog.com
8qgya5xd4#
如果你想运行你的curl命令,就像你在linux上运行它们一样,并且你有windows 10或更高版本,那么就这样做:
代码有点长的原因是如果执行单引号,windows会给予你一个错误。换句话说,命令
curl 'https://google.com'
可以在linux上工作,但在windows上不能工作。多亏了我创建的那个方法,你可以使用单引号,并像在linux上运行它们一样运行你的curl命令。此代码还检查转义字符,如\'
和\"
。例如,使用以下代码作为
var output = ExecuteCurl(@"curl 'https://google.com' -H 'Accept: application/json, text/javascript, */*; q=0.01'");
如果你在
C:\Windows\System32\curl.exe
上运行相同的字符串,它将不起作用,因为出于某种原因,windows不喜欢单引号。0ejtzxu15#
我知道这是一个很老的问题,但我贴出这个解决方案,以防它能帮助别人。我最近遇到了这个问题,谷歌把我带到这里。这里的答案帮助我理解了这个问题,但仍然有问题,由于我的参数组合。最终解决我的问题是curl to C# converter。这是一个非常强大的工具,支持大多数的参数 curl 。它生成的代码几乎可以立即运行。
vbopmzt16#
不要忘记添加System .NET.Http,特别是在收到以下错误时:
严重性代码描述项目文件行禁止显示状态错误CS 0246未能找到类型或命名空间名称“HttpClient”(是否缺少using指令或程序集引用?)1_default. aspx D:\Projetos\Testes\FacebookAPI\FB-CustomAudience\default. aspx. cs 56活动
在这种情况下,您应该:
1.添加来自Nuget的System .NET.Http:工具/ NuGet软件包管理器/管理解决方案的NuGet软件包;
1.搜索系统.Net.Http
1.在页面顶部添加以下代码:使用System .NET.Http实现的;
dluptydi7#
从您的控制台应用程序调用cURL不是一个好主意。
但是您可以使用TinyRestClient,这使得构建请求更加容易:
nwo49xxi8#
如果你是新的C#与cmd-line exp。你可以使用在线网站,如“https://curl.olsh.me/“或搜索curl到C#转换器将返回网站,可以为您做这一点。
或者如果您使用的是postman,则可以使用GenerateCodeSnippet。Postman代码生成器的唯一问题是依赖于RestSharp库。