[go: up one dir, main page]

0% encontró este documento útil (0 votos)
275 vistas5 páginas

Cliente REST en VBA - AreaTIC

Este documento describe cómo crear un cliente REST desde aplicaciones VBA usando la biblioteca msxml.dll para realizar peticiones HTTP y código para parsear cadenas JSON a objetos. Se incluye un ejemplo de código VBA para realizar un GET a un servicio REST y devolver los resultados en un Recordset de ADODB. El autor ofrece compartir el código de ejemplo completo.

Cargado por

Jorge Huerta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
275 vistas5 páginas

Cliente REST en VBA - AreaTIC

Este documento describe cómo crear un cliente REST desde aplicaciones VBA usando la biblioteca msxml.dll para realizar peticiones HTTP y código para parsear cadenas JSON a objetos. Se incluye un ejemplo de código VBA para realizar un GET a un servicio REST y devolver los resultados en un Recordset de ADODB. El autor ofrece compartir el código de ejemplo completo.

Cargado por

Jorge Huerta
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

3/9/2016 Cliente REST en VBA | areaTIC.

net

areaTIC.net
Ejemplos y casos prácticos sobre programación y soluciones tecnológicas.

BÚSQUEDA EN AREATIC.NET

Buscar

MARTES, 4 DE JUNIO DE 2013

Cliente REST en VBA
A raíz de unas utilidades que hemos de desarrollar en nuestros verticales surgió la necesidad de crear clientes REST desde aplicaciones
que usan lenguajes VBA (asp, Visual Basic 6.0, Macros de Excel, vbs)… Trabajando en estos entornos no encontraremos una dll oficial
que nos sirva para conectar a un servicio REST lo cual tiene bastante sentido porque VBA dejó de ampliarse ya hace 10 años con el paso
a .NET y REST es un tema emergente que se ha puesto de moda estos últimos años. 

Aún así teniendo en cuenta que REST no es más que una petición HTTP, usando la librería msxml.dll que aún podemos descargar en la
página de Microsoft se podría crear un cliente REST sin problemas en este tipo de aplicaciones. 

Con esta dll ya podremos realizar llamadas HTTP controlando el verbo y las cabeceras de la petición, pero no incorpora utilidades para
convertir cadenas JSON a objetos ni viceversa. Tirando de google un poco veo que hay gente que opta por usar las dll que .NET sí que
mantiene donde es bastante sencillo realizar este tipo de acciones con parseJSON y métodos del estilo, para ello generan una dll desde
.NET que vinculan desde las aplicaciones VBA usando interops o convirtiendo la dll .NET en objeto COM. En nuestro caso dada la
naturaleza del parque de aplicaciones que mantengo actualmente y teniendo en cuanto como se despliegan las aplicaciones a los usuarios
era una solución un poco engorrosa. Hemos optado por descargar esta solución Visual Basic 6.0 y aprovechar las utilidades JSON en
nuestras aplicaciones. 

Una vez tenemos estos 2 requisitos veamos como implementar un GET de ejemplo y a partir de ahí cada uno podría montarse su clase
proxy genérica para trabajar contra distintos servicios que sigan el patrón REST desde aplicaciones VBA. El GET haremos que ataque al
servicio REST (artículo) que creamos hace unas semanas en areaTIC y debería devolvernos la misma información que si usamos el
cliente genérico .NET que creamos también hace unas semanas en areaTIC.

Option Explicit

Private m_url as string 
Private m_Service as string 

Public Function GetFromWebAPI(ByVal strValue As String) As ADODB.Recordset
    Dim oHttReq As MSXML2.XMLHTTP
    On Error GoTo errorFunction
           

http://www.areatic.net/2013/06/cliente­rest­en­vba.html 1/5
3/9/2016 Cliente REST en VBA | areaTIC.net
   'Definimos URL y Servicio, en este caso es específico la URL se corresponde con el proyecto Web MVC API que tengo en mi IIS local. 
Tweets por  @canizarescarlos    m_url  = "http://localhost/WebApi/Api"
   m_Service = strValue

 Carlos Cañizares retwitteó
    ' Enviar el comando al servicio Web
Plain Concepts      ' usar XMLHTTPRequest para enviar la información al servicio Web
@plainconcepts     Set oHttReq = New XMLHTTP

Next 24 Sept we'll be in #SQLSatMadrid with our      ' Enviar el comando de forma síncrona 
cracks @_unaizc_ @PabloDoval @luisruizpavon       oHttReq.open "GET", m_url & "/" & m_Service, False
ow.ly/7TRz303KPON 
    ' las cabeceras a enviar en la petición HTTP
    ' oHttReq.setRequestHeader "Content‐Type", "text/xml; charset=utf‐8"
    
   ' enviar el comando
    Dim body As String
    oHttReq.send
    body = oHttReq.responseText
    
    Dim oRstDatos As ADODB.Recordset
    Set oRstDatos = ParseJSON(body)
    
    Set oHttReq = Nothing
    Exit Function
errorFunction:
    Err.Raise Err.Number
End Function
  31 ago
Option Explicit

 Carlos Cañizares retwitteó Private Sub Command1_Click()
    Dim rest_client As New RESTClient
Plain Concepts 
    Dim rs As ADODB.Recordset
@plainconcepts     Set rs = rest_client.GetFromWebAPI("articulo")
La nueva Intranet #Office365 @mariocortesf      
    rs.MoveFirst
Insertar Ver en Twitter     MsgBox rs.GetString
End Sub

ARCHIVO DE AREATIC.NET

►  2016 (10)
►  2015 (13)
►  2014 (15)
▼  2013 (52)
►  diciembre (1)
►  noviembre (1)
►  octubre (5)
►  septiembre (4)
Comentar que hemos usado como base para el método parseJSON el código fuente descargado del enlace que os presentaba al principio
►  agosto (4) del artículo pero hemos añadido un método para convertir el diccionario de valores en un Recordset dinámico ya que dada la naturaleza
de nuestras aplicaciones VBA nos resultaba muy útil. No hay problema en subir el código de ejemplo si alguien está interesado
►  julio (4)
hacérnoslo saber que os paso el proyecto de test que he usado para realizar el cliente REST VBA. Como siempre espero que el artículo os
▼  junio (4)

http://www.areatic.net/2013/06/cliente­rest­en­vba.html 2/5
3/9/2016 Cliente REST en VBA | areaTIC.net
SQL Server: Últimos accesos a una tabla resulte interesante, cualquier duda o valoración hacerla llegar a través de comentarios, emails o como buenamente os apetezca.
Recuerda que puedes seguir areaTIC en las redes sociales, anímate a participar!
Windows Phone 8 ­ Acceso a datos, REST
Wordpress: Añadir un Sitemap
Publicado por Carlos Cañizares a las 20:55:00  +5   Recomendar esto en Google
Cliente REST en VBA

►  mayo (4)
►  abril (5)
►  marzo (4)
►  febrero (7)
►  enero (9) Valora este artículo (1 Valoraciones)
Etiquetas: areaTIC, HTTP, JSON, REST, VBA
►  2012 (46)

3 comentarios:
ETIQUETAS DE AREATIC.NET Byron Penagos dijo...
Active  Directory  (3)  Ajax  (3)  Alexa Traffic Rank (1)  Android Demasiado interesante el documento . por favor estoy interesado en que me manden el proyecto test. muchas gracias por el
(3)  AngularJS  (6)  Api  DL  (1)  Api  Management  (1)  Apple  (1) grandioso aporte.
areaTIC (133)  ASP (3) ASP.NET (21)  ASP.NET 11 de noviembre de 2015, 18:14
4.0  (6)  ASP.NET  5.0  (1)  asp.net  core  (3)  AsyncPattern  (1)
autenticación  (2)  Babel (1) backup (1)  BI  (3)  Blogger (16) Kristian Cevallos dijo...
BOM (1) bower (1)  C# (28)  CallBackContract  (2)  Canvas De igual manera me uno al compañero es un tema muy interesante y desearía me ayuden. Ya que con Json no he logrado
(1)  ChannelFactory  (3)  Chrome  (3)  Chutzpah  (1)  Citrix  (1) consumir el WS
columna (1) condiciones (3) Cordova (5) CSS  (5)  Database
17 de noviembre de 2015, 17:52
Mail  (2)  DDE  (1)  DI  (1)  directivas  (3)  DMV  (2)  docker  (1)
dominio  (1)  Ecmascript  (1)  Eventos  (1)  facebook  (2)  facetas
(3)  Feed  (2)  Fiddler (1)  Firefox  (1)  google+  (3)  grunt.js  (1) Carlos Cañizares dijo...
Hangouts (1)  Hint  (2)  Hololens  (1)  HTML  (9)  HTML5  (14) Buenas! comentaros que he perdido este ejemplo entre traspasos de portátiles. Si no recuerdo mal lo que añadí a vbjson fue
HTTP  (12)  identity  (3)  IIS  (9)  IIS  7.0  (3)  indices  (5) un parseador para pasar el resultado string a un recordset.
Intercalación  (3)  IOC  (1)  IOS  (2)  IPhone  (1)  ITIL  (2)
2 de diciembre de 2015, 15:06
JasmineJS (1)  Javascript (24)  JQuery  (2)  JSON  (10)
Karma  (1)  less.js  (1)  linkedin  (3)  Lync  (1)  Mac  (2)
metaetiqueta  (2)  Metro  (2)  Microsoft  (1)  Mozilla  (1)  MS Publicar un comentario en la entrada
Dynamics NAV (1) MultiThreading (3) MVC (7) net .core  (2)
NPM (1) ODBC (1)  open  source  (3)  Operador  SQL  Server  (1)
ownCloud  (1)  Pagerank  (3)  PhoneGap  (5)  plugin  (3)
Qlikview (2) Remote Tools (1) REST (10) SaaS (5) Scrum (1)
SEM  (1)  SEO  (7)  Service  Broker  (2)  ServiceHost  (1)
Sharepoint (1)  SignalR  (2)  sitemap (1)  Skype  (1)  soap  (10)
SQL  Profiler  (2)  SQL Server (27)  SQL  Server  log  (1)
SQLite  (2)  Store  App  (1)  Swagger  (1)  Swashbuckle  (1)  Swift
(2)  ThreadSafe  (2)  turnapi  (1)  twitter  (4)  twitterfeed  (1)
TypeScript  (2)  Unit  Testing  (1)  Unity  (1)  VBA  (2)  Visual
Studio  (8)  Visual  Studio  2012  (1)  Visual  Studio  2015  (2)
Visual  Studio  Code  (2)  VMware  (1)  VSCode  (1)  WCF  (10)
WCF Dúplex  (2)  WebAPI (9)  WebPack (1)  WebSockets  (2)
wikipedia (1) Windows (1)  Windows  8  (4)  Windows  8.1  (2)
Windows  Forms  (2)  Windows  Phone  (4)  Windows  Server
(1)  Wordpress  (2)  WSDualHttpBinding  (2)  Xcode  (2)  XML
(6) xsd (2) YouTube (1)

http://www.areatic.net/2013/06/cliente­rest­en­vba.html 3/5
3/9/2016 Cliente REST en VBA | areaTIC.net
TOP 5 DEL ÚLTIMO MES EN AREATIC.NET

ITIL: Herramientas open source Introduce tu comentario...
Si estamos pensando en la
implantación de procesos siguiendo
las recomendaciones de ITIL en
nuestra organización una de las
primeras pregun...
Comentar como:  Seleccionar perfil...
SQL Server: Insertar valor en columna Identity
Es posible que alguna ocasión os hayáis
encontrado con una tabla en la que tenéis una Publicar
  Vista previa
columna identity [AddressID] (normalmente
primary ke...

Error #­2147467259 : [Microsoft][Administrador
de controladores ODBC] No se encuentra el
nombre del origen de datos y no se especificó
ningún controlador predeterminado
Nos disponemos a publicar un sitio web usando IIS
7.0 / 7.5 en un Windows 2008 Server R2 64 bits y
en algún punto de la aplicación se usan ...

SQL Server: Últimos accesos a una
tabla
Es muy posible que en algún
momento hayas pensado en que
estaría bien saber cuándo ha sido el
último acceso a una determinada
tabla de tu ... Entrada más reciente Página principal Entrada antigua

SQL Server: ¿Qué es la
fragmentación de índices?
En el artículo SQL Server: FILL
FACTOR os comentaba que si para un
determinado índice seleccionamos un
fill factor demasiado elevado y hay...

Con la tecnología de Blogger.

http://www.areatic.net/2013/06/cliente­rest­en­vba.html 4/5
3/9/2016 Cliente REST en VBA | areaTIC.net

 
Nombre
 
Correo electrónico

Mensaje  

Enviar

MOST RECENT

COPYLEFT DE AREATIC.NET Para cualquier duda o si quieres colaborar con el blog de areaTIC.net
puedes contactar con nosotros, en la sección CONTACTO. Si quieres
saber más sobre nosotros puedes obtener más información en la
areaTIC.net by www.areaTIC.net is licensed under a
sección ACERCA DE areaTIC.net o también puedes acceder a nuestro
Creative Commons Reconocimiento­NoComercial­
ARCHIVO para consultar todos nuestros artículos.
CompartirIgual 3.0 Unported License.

http://www.areatic.net/2013/06/cliente­rest­en­vba.html 5/5

También podría gustarte