2017-01-10 1 views
-1

Wie kann ich den folgenden cURL Anruf über C# Konsole App machen.Wie cURL in C# anrufen

curl -k https://serverName/clearprofile.ashx -H "Host: example.com" 

Ich habe versucht CurlSharp. Leider konnte ich dieses Projekt nicht erfolgreich aufbauen, weil libcurlshim64 Assembly.

Von here Ich habe verstanden, dass der beste Ansatz ist mit HttpClient Klasse, aber ich weiß nicht, wie genau den oben genannten cURL Anruf von meiner Konsole Anwendung zu machen.

+3

Welcher Code? Die von Ihnen gepostete Befehlszeile führt einfach einen GET mit einem bestimmten Header aus. Haben Sie die Dokumentation von HttpClient überprüft, zB HttpClient.GetStringAsync? –

+0

Mein schlechtes, ich habe meinen Beitrag bearbeitet. –

Antwort

0

Wenn Sie nur einfach etwas möchte ich die Httpclient-Klasse in das .Net Framework wie diese gebaut verwenden würde:

using System.Net.Http; 
using System.Threading.Tasks; 

namespace ScrapCSConsole 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      HttpClient client = new HttpClient(); 
      client.DefaultRequestHeaders.Host = "example.com"; 
      Task<string> task = client.GetStringAsync("https://serverName/clearprofile.ashx"); 
      task.Wait(); 
      Console.WriteLine(task.Result); 
     } 
    } 
} 

Für komplexere Sachen, können Sie auch die HttpWebRequest-Klasse wie folgt verwenden:

using System; 
using System.IO; 
using System.Net; 

namespace ScrapCSConsole 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://google.co.uk"); 

      request.Host = "example.com"; 

      HttpStatusCode code; 
      string responseBody = String.Empty; 

      try 
      { 
       using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
       { 
        code = response.StatusCode; 
        using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
        { 
         responseBody = reader.ReadToEnd(); 
        } 
       } 
      } 
      catch (WebException webEx) 
      { 
       using (HttpWebResponse response = (HttpWebResponse)webEx.Response) 
       { 
        code = response.StatusCode; 
        using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
        { 
         responseBody = reader.ReadToEnd(); 
        } 
       } 
      } 

      Console.WriteLine($"Status: {code}"); 
      Console.WriteLine(responseBody); 
     } 
    } 
} 
+0

Vielen Dank! Ich hatte einen Zertifikatfehler, also habe ich gerade vor dem try/catch-Block einen Zertifikatsüberprüfungs-Handler hinzugefügt. Funktioniert aber jetzt perfekt! –