using Grpc.Core; using System; using System.Threading.Tasks; using ServicesCloudConfig; using ServicesAxwayAdmin; using Grpc.Net.Client; using System.Security.Cryptography.X509Certificates; namespace client { class Program { static async Task Main(string[] args) { string form = @"[ { ""nombre"": ""TestAuto"", ""correo"": ""testamcoq@triara.com"", ""telefono"": ""1234567890"", ""descripcion"": ""Prueba Automatizada ORG"" }, { ""usuario"": ""amcoadmin12"", ""nombre"": ""Amco Org Admin"", ""correo"": ""testamco12@triara.com"", ""telefono"": ""1234567890"", ""telefonocelular"": ""1234567890"", ""descripcion"": ""Prueba Automatizada Admin"" }, { ""usuario"": ""amcoconsulta12222"", ""nombre"": ""Amco Org User"", ""correo"": ""testamco1s6@triara.com"", ""telefono"": ""12345267890"", ""telefonocelular"": ""12345678290"", ""descripcion"": ""Prueba Automatizada User"" } ]"; Console.WriteLine("Iniciando cliente canal inseguro . . ."); Channel insecurechannel = new Channel("localhost", 50051, ChannelCredentials.Insecure); await insecurechannel.ConnectAsync().ContinueWith((task) => { if (task.Status == TaskStatus.RanToCompletion) { Console.WriteLine("Cliente conectado satisfactoriamente"); } }); var insecureclient = new ServiceAxwayAdmin.ServiceAxwayAdminClient(insecurechannel); //Timer de 1 segundo, para que esperar a que inice servidor. Solo para pruebas locales. System.Threading.Thread.Sleep(1000); try { var response = insecureclient.contractedService(new contractedServiceRequest { FromRegistro = form }); Console.WriteLine(response.Response.ToString()); } catch (RpcException ex) { Console.WriteLine(ex.Status.Detail); } insecurechannel.ShutdownAsync().Wait(); Console.WriteLine("Fin cliente canal inseguro . . ."); Console.WriteLine("Iniciando cliente canal seguro . . ."); //Console.WriteLine("Iniciando cliente, cargando certificados . . ."); string certificatePem = File.ReadAllText(@"server.pem"); string privateKeyPem = File.ReadAllText(@"server.key"); var cert = X509Certificate2.CreateFromPem(certificatePem, privateKeyPem); var HttpClientHandler = new HttpClientHandler(); HttpClientHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; using HttpClient httpClient = new(HttpClientHandler); using var channel = GrpcChannel.ForAddress("https://localhost:443", new GrpcChannelOptions { HttpClient = httpClient }); var client = new ServiceAxwayAdmin.ServiceAxwayAdminClient(channel); //Console.WriteLine("Iniciando conexion a servidor ..."); //Timer de 1 segundo, para que esperar a que inice servidor. Solo para pruebas locales. System.Threading.Thread.Sleep(1000); try { var response = client.contractedService(new contractedServiceRequest { FromRegistro = form }); Console.WriteLine(response.Response.ToString()); } catch (RpcException ex) { Console.WriteLine(ex.Status.Detail); } channel.ShutdownAsync().Wait(); Console.WriteLine("Fin cliente canal seguro . . ."); Console.ReadKey(); } } }