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