Making a cURL call in C# Making a cURL call in C# curl curl

Making a cURL call in C#


Well, you wouldn't call cURL directly, rather, you'd use one of the following options:

I'd highly recommend using the HttpClient class, as it's engineered to be much better (from a usability standpoint) than the former two.

In your case, you would do this:

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());}

Also note that the HttpClient class has much better support for handling different response types, and better support for asynchronous operations (and the cancellation of them) over the previously mentioned options.


Or in restSharp:

var client = new RestClient("https://example.com/?urlparam=true");var request = new RestRequest(Method.POST);request.AddHeader("content-type", "application/x-www-form-urlencoded");request.AddHeader("cache-control", "no-cache");request.AddHeader("header1", "headerval");request.AddParameter("application/x-www-form-urlencoded", "bodykey=bodyval", ParameterType.RequestBody);IRestResponse response = client.Execute(request);


Below is a working example code.

Please note you need to add a reference to Newtonsoft.Json.Linq

string url = "https://yourAPIurl";WebRequest myReq = WebRequest.Create(url);string credentials = "xxxxxxxxxxxxxxxxxxxxxxxx:yyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";CredentialCache mycache = new CredentialCache();myReq.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(credentials));WebResponse wr = myReq.GetResponse();Stream receiveStream = wr.GetResponseStream();StreamReader reader = new StreamReader(receiveStream, Encoding.UTF8);string content = reader.ReadToEnd();Console.WriteLine(content);var json = "[" + content + "]"; // change this to arrayvar objects = JArray.Parse(json); // parse as array  foreach (JObject o in objects.Children<JObject>()){    foreach (JProperty p in o.Properties())    {        string name = p.Name;        string value = p.Value.ToString();        Console.Write(name + ": " + value);    }}Console.ReadLine();

Reference: TheDeveloperBlog.com