Para integrar sus aplicaciones usando Microsoft .NET con edinn a través de la API, necesitará un entorno de desarrollo en su lenguaje de programación preferido.

En este ejemplo usaremos VB.NET para conectar con la plataforma edinn, obtendremos el árbol de áreas y procesos y nos desconectaremos de la plataforma.

Este ejemplo necesita el paquete NuGet "Newtonsoft.Json", que se puede instalar desde el entorno de programación Microsoft Visual Studio.

Podemos realizar este ejemplo en solo tres pasos:

1º Crear una aplicación de Windows universal:

Abrimos Microsoft Visual Studio 2019 Community.

En “Tareas iniciales”, seleccionamos “Crear un proyecto”.

En el buscador de plantillas escribimos “uwp basic”.

En la lista que aparece seleccionamos “Aplicación vacía (Windows universal)” con la etiqueta Visual Basic y pulsamos “siguiente”.

Elegimos en nombre de al aplicación y la carpeta destino y pulsamos “crear”.

2º Pegar el código de ejemplo:

En el explorador de soluciones, abrimos el archivo MainPage.xaml.

Aparecerá una ventana de vista previa y otra con el xml del interfaz.

Dentro de la sección “Grid” pegaremos el código siguiente:

<StackPanel x:Name="frmLogin" HorizontalAlignment="Stretch">

<TextBlock Text="edinn API tester" FontSize="14" FontWeight="Bold" />

<TextBox x:Name="txtCompany" PlaceholderText="company" />

<TextBox x:Name="txtUser" PlaceholderText="user" />

<TextBox x:Name="txtPass" PlaceholderText="password" />

<Button x:Name="cmdLogin" Content="Login" Click="cmdLogin_Click" HorizontalAlignment="Stretch" />

<TextBox x:Name="txtSession" Text="" TextWrapping="Wrap" PlaceholderText="session"/>

<Button x:Name="cmdTree" Content="Get Tree" HorizontalAlignment="Stretch" Click="cmdTree_Click"/>

<Button x:Name="cmdLogout" Content="Logout" HorizontalAlignment="Stretch" Click="cmdLogout_Click"/>

<TextBox x:Name="txtResponse" Text="" TextWrapping="Wrap" IsReadOnly="True" Height="180" PlaceholderText="response"/>

</StackPanel>

Abriremos en documento MainPage.xaml.vb que contiene el código fuente.

Importaremos la librería Http al comienzo del código.

' The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

Imports System.Net.Http

''' <summary>

''' An empty page that can be used on its own or navigated to within a Frame.

''' </summary>

Public NotInheritable Class MainPage

   Inherits Page


End Class

Copiaremos el código siguiente a continuación de la declaración de la clase.

' The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

Imports System.Net.Http

''' <summary>

''' An empty page that can be used on its own or navigated to within a Frame.

''' </summary>

Public NotInheritable Class MainPage

   Inherits Page


 Private Sub cmdLogin_Click(sender As Object, e As RoutedEventArgs) Handles cmdLogin.Click

   txtResponse.Text = ""

   Dim lStr = session_post()

   txtResponse.Text = lStr

 End Sub


 Private Sub cmdTree_Click(sender As Object, e As RoutedEventArgs)

   txtResponse.Text = ""

   Dim lStr = tree_get()

   txtResponse.Text = lStr

 End Sub


 Private Sub cmdLogout_Click(sender As Object, e As RoutedEventArgs)

   txtResponse.Text = ""

   txtResponse.Text = session_delete()

 End Sub


 Private Function session_post() As String

   Dim client As New HttpClient

   ''' IMPORTANT! Change the url according to your server IP ad PORT '''

   Dim url As String = "http://localhost:8080/sessions"

   Dim values As New Dictionary(Of String, String)


   values("company") = txtCompany.Text

   values("user") = txtUser.Text

   values("password") = txtPass.Text


   Try

     Dim content As New FormUrlEncodedContent(values)

     Dim response As New HttpResponseMessage

     response = client.PostAsync(url, content).Result

     Return response.Content.ReadAsStringAsync().Result


   Catch ex As Exception

     Return ex.Message


   End Try

 End Function


 Private Function session_delete() As String

   Dim client As New HttpClient

   ''' IMPORTANT! Change the url according to your server IP ad PORT '''

   Dim url As String = "http://localhost:8080/sessions/" & txtSession.Text & "?company=" & txtCompany.Text


   Try

     Dim request As New HttpRequestMessage(HttpMethod.Delete, New Uri(url))

     Dim response As New HttpResponseMessage

     response = client.SendAsync(request).Result

     Return response.Content.ReadAsStringAsync().Result


   Catch ex As Exception

     Return ex.Message


   End Try


 End Function


 Private Function tree_get() As String

   Dim client As New HttpClient

   ''' IMPORTANT! Change the url according to your server IP ad PORT '''

   Dim url As String = "http://localhost:8080/tree?company=" & txtCompany.Text & "&session=" & txtSession.Text


   Try

     Dim response As New HttpResponseMessage

     response = client.GetAsync(New Uri(url)).Result

     Return response.Content.ReadAsStringAsync().Result


   Catch ex As Exception

     Return ex.Message


   End Try

 End Function


End Class

3º Particularizar URL y probar:

Si tenemos un servidor de edinn en nuestro propio equipo, una compañía creada y un usuario, podremos usar la aplicación tal como está. Sino, debemos cambiar en el código fuente la dirección a la que queremos conectar.

Para cambiar la dirección de nuestro servidor de edinn, simplemente, cambiamos “localhost” por la IP o el DNS de nuestro servidor. Si nuestro servidor tiene certificado, podremos usar https en lugar de http.

El funcionamiento de la aplicación de test es el siguiente:

Login: Se rellena el campo “company”, “user” y “password” y se pulsa “Login”. En la casilla “response” aparecerá la respuesta al login. En la casilla “response” se verá el código de sesión.

Get Tree: Para obtener el árbol de áreas y procesos, rellenamos el campo “company”, pegamos el código de sesión en la casilla “sessión” y pulsamos “Get Tree”. En la casilla “response” se verá el árbol de áreas y procesos.

Logout: Para terminar una sesión, rellenamos el campo “company”, pegamos el código de sesión en la casilla “sessión” y pulsamos Logout. En la casilla “response” se verá la respuesta.

A partir de este punto, consultando la ayuda de la API ya se pueden implementar las llamadas a las funciones disponibles.