En este ejemplo vamos a provechar para obtener datos de un dominio registrado como la fecha de expiracion del dominio mediante una "API WebService" "Whois API"
como nota: se deben de registrar a la pagina del api para poder usarla con usuario y contraseña
Variables Definidas | |
&StatusCode | Numeric |
&result | LongVarchar |
&HttpClient | HttpClient |
Se define el url que accede a el API Whois y Se Ejecuta el URL
&HttpClient.Host= 'www.whoisxmlapi.com/whoisserver/WhoisService?domainName=aquivaDominio&username=aquivaUsuario&password=aquiPassword&outputFormat=XML'
&HttpClient.Execute('GET','')
Una vez que se ha ejecutado obtenemos el status HTTP
&StatusCode = &HttpClient.StatusCode
El resultado en una cadena la obtemos asi:
&result = &HttpClient.ToString() //devuelve el string del xml
Si el resultado lo queremos directamente a un archivo se hace de la siguiente forma:
&HttpClient.ToFile('mixml.xml') //devuelve el xml en un archivo
Leer un Elemento de un XML
Supongamos que necesito saber la fecha de vigencia de un dominio, se obtendra leyendo el xml devuelto en &result = &HttpClient.ToString() de la siguiente forma:
&XMLReader.OpenFromString(&result)
&XMLReader.ReadType(1,'createdDateNormalized')
&Vigencia = &XMLReader.Value
Autentificarse a un Servidor Proxy con Genexus
Siguiendo en el ejemplo descrito en la parte superior, si ademas de acceder al url del api para obtenr el xml, deben pasar por un Proxy, bueno la solucion es muy simple solo hay que agregar lo siguiente a nuestra variable &HttpClient, este codigo debe ir antes de &HttpClient.Execute
&UserProxy = 'usuario'
&PassProxy = 'pass'
&AdressProxy = 'http://10.65.0.43:8080'
&HttpClient.AddProxyAuthentication(0,&AdressProxy,&UserProxy,&PassProxy)
&HttpClient.Host= 'www.whoisxmlapi.com/whoisserver/WhoisService?domainName=aquivaDominio&username=aquivaUsuario&password=aquiPassword&outputFormat=XML'
&HttpClient.Execute('GET','')
Ejemplo Completo
Procedimiento para obtener la fecha de vigencia
Variables Definidas | |
&StatusCode | Numeric |
&result | LongVarchar |
&HttpClient | HttpClient |
&UrlString | UrlString |
&domainName | varchar |
&username | varchar |
&password | varchar |
&outputFormat | varchar |
&AdressProxy | varchar |
&UserProxy | varchar |
&PassProxy | varchar |
&XMLReader | XMLReader |
&Vigencia | varchar |
Rules:
parm(in:&UserProxy, in:&PassProxy, in:&AdressProxy, in:&username, in:&password, in:&domainName, in:&outputFormat, out:&Vigencia);
Source:
&UrlString = 'www.whoisxmlapi.com/whoisserver/WhoisService?domainName=' + &domainName
&UrlString += &username=' + &username + '&password=' + &password + '&outputFormat='+&outputFormat
&HttpClient.AddProxyAuthentication(0,&AdressProxy,&UserProxy,&PassProxy)
&HttpClient.Host= &UrlString
&HttpClient.Execute('GET','')
&result = &HttpClient.ToString()
&StatusCode = &HttpClient.StatusCode
&XMLReader.OpenFromString(&result)
&XMLReader.ReadType(1,'createdDateNormalized')
&Vigencia = &XMLReader.Value
&Vigencia=TRIM(&Vigencia.Replace(" UTC",""))
descargar ejemplo xpz
Referencias:
whois-api-doc
HttpClient Data Type
XMLReader Data Type
Consumir Web Service:
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?WSDL+Import+Wizard,
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?External+Object%3A+WSDL+%28Web+Service%29,
Consumir Web Service Seguros:
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Consumir+servicios+web+bajo+https+y%2Fo+autenticaci%C3%B3n,
http://www.genexus.com/noticias/leer-noticia/consumir-servicios-web-bajo-https-y-o-autenticacion?es
Necesito saber tambien como armar una variable &httpclient para obtener una respuesta en formato Json.
ResponderEliminarDigamos que el link que funciona correctamente utilizando el browser es:
http://172.30.1.62:8080/poste?objectid=17424®ional=GLR&tramos=1
Saludos,
Eliminaren el siguiente enlace viene un ejemplo espero te sirva
http://genexus-mancilla.blogspot.mx/2012/10/ejemplo-servicio-rest-con-genexus-java.html