我想curl在我的C#控制台应用程序中进行以下调用:
curl
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,而是使用以下选项之一:
HttpWebRequest
HttpWebResponse
WebClient
HttpClient
我强烈建议使用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与前面提到的选项相比,该类对处理不同的响应类型有更好的支持,并且对异步操作(以及取消了它们)有更好的支持。