Как сделать вызов команды cURL из. Net Core 3.1 Code - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть эта сложная команда cURL , которая прекрасно работает :

curl -L --negotiate -u : -b ~/cookiejar.txt  "https://idp.domain.net/oauth2/authorize? scope=openid&response_type=code&redirect_uri=https://localhost:5001&client_id=client_id_here"

Однако на самом деле невозможно выполнить репликацию в C# с помощью HttpClient. Но мне нужно вызвать команду cURL из. Net Код ядра и получить ответ обратно.

Есть ли способ сделать обычный вызов команды cURL в. Net Core (v3. 1)?

(Если вам интересно, это подробности о команде cURL: Репликация команды cURL с использованием перенаправления и файлов cookie в. Net Core 3.1 )

1 Ответ

0 голосов
/ 02 апреля 2020

Это можно сделать через встроенный вызов powershell.

  1. Установите NuGet Microsoft.Powershell.SDK.
  2. Добавьте using оператор System.Management.Automation
  3. Добавьте следующий метод:

-

public List<string> ExecutePowershell(string command)
{
    var resultsAsString = new List<string>();
    using (var ps = PowerShell.Create())
    {
        var results = ps.AddScript(command).Invoke();
        foreach (var result in results)
        {
            resultsAsString.Add(result.ToString());
        }
    }
    return resultsAsString;
}
Назовите это так:

-

void Main()
{
    var results = ExecutePowershell("curl -L --negotiate -u : -b ~/cookiejar.txt  /"https://idp.domain.net/oauth2/authorize? scope=openid&response_type=code&redirect_uri=https://localhost:5001&client_id=client_id_here/"");
    Console.WriteLine(results);
}

Я сделал это из этого ответа: { ссылка }

...