Ejemplo n.º 1
0
        public static SslStream GetSecureStream(this TcpClient client, TransportData transport)
        {
            var stream = new SslStream(client.GetStream(),
                                       false,
                                       transport.RemoteCertificateValidationCallback,
                                       null);

            stream.AuthenticateAsClient(transport.Uri.Host, new X509CertificateCollection(), transport.SslProtocols, transport.CheckCertificateRevocation);
            Console.WriteLine($"SSL Protocol: {stream.SslProtocol}");
            return(stream);
        }
Ejemplo n.º 2
0
        private static Stream GetStream(TransportData transport)
        {
            var client = new TcpClient(transport.Uri.Host, transport.Uri.Port)
            {
                ReceiveTimeout = 10000
            };

            switch (transport.Uri.Scheme)
            {
            case "https":
                return(client.GetSecureStream(transport));

            default:
                return(client.GetStream());
            }
        }
Ejemplo n.º 3
0
        public async Task <HttpResponseMessage> SendAsync(TransportData transport, HttpRequestMessage message)
        {
            using (var stream = GetStream(transport))
            {
                await stream.WriteRequestMessageAsync(message, Encoding);

                var responseMessage = await stream.ReadResponseMessageAsync(Encoding);

                foreach (var cookie in Cookie.ParseCookies(responseMessage.Headers.GetOrDefault("Set-Cookie")))
                {
                    if (string.IsNullOrWhiteSpace(cookie.Domain))
                    {
                        cookie.Domain = transport.Uri.Host;
                    }
                    CookieStore.Store(cookie);
                }

                return(responseMessage);
            }
        }