Conexión service layer desde C# RestSharp

Muy buen dia para todos, Estoy comenzando con service layer y estoy intentando conectarme desde C# utilizando la libreria RestSharp, que he visto como ejemplo en otros foros e hilos pero no he tenido exito con ello ya que al tratar de conectarme al puerto 50000 de mi servidor local, se cae la conexion y me muestra el siguiente mensaje:

+ InnerException {"Se ha terminado la conexión: No se puede establecer una relación de confianza para el canal seguro SSL/TLS."} System.Exception {System.Net.WebException}

Este es mi código en C# para la conexión.

var options = new RestClientOptions("https://localhost:50000/b1s/v1/Login")
            {
                MaxTimeout = -1

            };

            var client = new RestClient(options);

            var request = new RestRequest("api/item",Method.Post);
            request.AddHeader("Content-Type", "application/json");
            var body = "{\"CompanyDB\": \"xxxx\",\"Password\": \"xxxxx\",\"UserName\": \"xxxxx\"}";
            request.AddParameter("application/json", body, ParameterType.RequestBody);
            RestResponse response = client.Execute(request);
            return response.Content;

Muchas gracias por su atención, espero puedan ayudarme.

Hola @eduardo_buitr El servicio Service Layer no está local, no en tu equipo, este se encuentra en el servidor de Suse, deduzco que tienes Hana

Asegurarte que el servicio esté activo
Apuntar a h_ttps://tuserverhana:50000/b1s/v1/Login
Apóyate de herramientas como Postman

Saludos

@pcarrasco gracias por tu respuesta, mi ambiente es sql, ya probé con el postman y la conexion se hace sin problemas.

ten en cuenta que la conexion a Service Layer tiene un timeout.

Gracias @juliancab, efectivamente se maneja el timeout, y le coloque el timeout mostrado por postman.

Despues de conumir varias librerias, validar opciones y revisar varios foros, encontré la manera de conetarme utilizando las siguientes librerias, desde C#.

using System.Net;
using Newtonsoft.Json.Linq;
using System.IO;

Esta es el metodo que utilizo parala conexion.

internal static string Conect()
        {
            string sessionID = string.Empty;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
            JObject json = new JObject();
            json.Add("CompanyDB", "tubase");
            json.Add("UserName", "tuusuariodesap");
            json.Add("Password", "tuclavedeusuariodesap");
            string body = json.ToString();

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://tuservidor:50000/b1s/v2/Login");
            request.ServicePoint.Expect100Continue = false;
            request.Method = "POST";
            request.ContentType = "application/json";
            //request.ContentLength = body.Length;
            // para evitar validacion
            request.ServerCertificateValidationCallback = delegate { return true; };
            request.Accept = "application/json;odata=minimalmetadata";

            using (Stream webStream = request.GetRequestStream())
            using (StreamWriter requestWriter = new StreamWriter (webStream, System.Text.Encoding.ASCII))
            {
                requestWriter.Write(body);
            }

            try
            {
                WebResponse webResponse = request.GetResponse();
                using (Stream webStream = webResponse.GetResponseStream() ?? Stream.Null)
                using (StreamReader responseReader = new StreamReader(webStream))
                {
                    string responseText = responseReader.ReadToEnd();
                    JObject objectRes = JObject.Parse(responseText);
                    sessionID = objectRes["SessionId"].ToString();
                }

            }catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return sessionID;
}

Espero les sirva.

1 me gusta

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.