cURL - разрешить в c # - PullRequest
       18

cURL - разрешить в c #

0 голосов
/ 13 мая 2019

Я пытаюсь имитировать аргумент curl --resolve в C #. Я собираюсь сделать https запросы на сервер с поддержкой SNI, чтобы убедиться, что все работает, прежде чем мы изменим записи DNS. В настоящее время я работаю в Windows, поэтому могу изменить файл hosts, но это не лучшее решение.

Я еще не копался в коде System.Net.Http HttpClient, но если там есть libcurl, я считаю, что это аргумент CURLOPT_RESOLVE, который мне нужно установить.

Запуск cURL в новом процессе не зависит от платформы.

Я что-то упускаю в WebRequest или HttpClient? Есть ли другая, более гибкая библиотека с поддержкой этого?

Спасибо

1 Ответ

0 голосов
/ 13 мая 2019

Вы можете использовать для этого прямой TcpClient.IIRC, HttpClient вообще не использует libcurl.

Что вы можете сделать, однако:

        {
            TcpClient client = new TcpClient();

            string ipAddress = "216.58.204.46";
            ushort port = 443;

            client.Connect(IPAddress.Parse(ipAddress), port);

            using (SslStream sslStream = new SslStream(client.GetStream(), false, ((sender, certificate, chain, errors) => true)))
            {
                sslStream.AuthenticateAsClient("www.google.com");

                string headers = "GET https://www.google.com/ HTTP/1.1\r\nHost: google.com\r\n\r\n";
                byte[] payload = Encoding.UTF8.GetBytes(headers);
                sslStream.Write(payload);

                byte[] buffer = new byte[1024];
                sslStream.Read(buffer);

                Console.WriteLine(Encoding.UTF8.GetString(buffer));
            }

            Console.ReadKey();
        }

Вы можете добавить свои собственные проверки ssl там, если вы хотите, чтобы также.

Даю вам этот ответ как временное исправление, так как я не знаю, как это сделать с HttpClient aswell


Вам нужно изменить IP-адрес, порт и заголовки (так, как они вам нужны)).Для этого должна быть какая-то другая структура, но поскольку это то, что вам, вероятно, нужно для личных тестов, вам не нужно ничего сложного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...