2017-01-10 25 views
-1

C#コンソールアプリケーションから次のようなcURL呼び出しを行うにはどうしたらいいですか?C#でCURL呼び出しを行う方法

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

私は試しましたCurlSharpです。残念ながら、私はlibcurlshim64アセンブリがないため、このプロジェクトを正常に構築できませんでした。

からhere私は最良の方法はHttpClientクラスを使用することであると理解しましたが、コンソールアプリケーションから上記のcURLコールをどのくらい正確に行うかはわかりません。あなただけの私はこのような.NET Frameworkのに組み込まれているのHttpClientクラス使用することになり、単純な何かしたい場合は

+3

どのようなコードですか?あなたが掲示したコマンドラインは単に特定のヘッダーでGETを実行します。 HttpClientのドキュメント、例えばHttpClient.GetStringAsyncをチェックしましたか? –

+0

私の悪い、私は私の記事を編集しました。 –

答えて

0

:より複雑なもののため

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

を、あなたも、このように、HttpWebRequestクラスを使用することができます。

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

ありがとうございました!証明書エラーが発生しましたので、証明書検証ハンドラをtry/catchブロックの直前に追加しました。しかし、今は完璧に動作します! –

関連する問題