Servicio Rest con Genexus Java
Crear el modelo de genexus con el generador de java y el DataStore de SQL Server
Configurar modelo con el generador Java
agregar en el classpath las siguientes librerias
(Se pueden encontrar en el directorio <GenexusInstall>\gxjava):
jackson-core-asl-1.5.5.jar
jackson-jaxrs-1.5.5.jar
jackson-mapper-asl-1.5.5.jar
jersey-core-1.4.jar
jersey-json-1.4.jar
jersey-server-1.4.jar
Classpath = gxclassr.zip;GxUtils.jar;.;lucene-core-2.2.0.jar;iText.jar;.\drivers\jtds-1.2.jar;.\drivers\jt400.jar;.\ojdbc14.jar;C:\Tomcat 6.0\lib\servlet-api.jar;jackson-core-asl-1.5.5.jar;jackson-jaxrs-1.5.5.jar;jackson-mapper-asl-1.5.5.jar;jersey-core-1.4.jar;jersey-json-1.4.jar;jersey-server-1.4.jar
ahora ya puedes crear los objetos de tu proyecto
en el momento que lo requieras Generar y ejecuta la aplicacion(F5), la primeras vez les pide los datos de la base de datos
si te marca error en la creacion de la base de datos debes asegurarte que el servidor de sql server permite la conexiones tcpip y el puerto 1433 este configurado
Si el documento te sirvio deja tu comentario o dale clic a google+
Ejemplo:
para consumir el servicio Rest
Crear procedimiento SyncReceive
Rules:
parm(out:&LVC);
Source:
&serverHost = !"192.168.0.3"&serverRestBaseURL = !"/appJavaEnvironment/rest/"&Port = 8080 //para tomcat&Url = !'GetDatos1?fmt=json'&httpclient.Host = &serverHost&httpclient
.Port = &Port&httpclient
.BaseUrl = &serverRestBaseURL&httpclient
.AddHeader(!'Content-type',!'application/json')&httpclient.Execute(!'GET', &Url)&i = 0&Datos1List.FromJson(&httpclient.ToString())
For &Datos1 in &Datos1List new DatoId = &Datos1.DatoId DatoNombre =
&Datos1.DatoNombre DatoDireccion =
&Datos1.DatoDireccion
endnew &i+= 1endforcommit
if &i = 0
&LVC = " No existen registros para agregar"else &LVC = &i.ToString() + " registros agregados"endif
fuentes:
http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,4,61,O,E,0,,31458
Mostrando entradas con la etiqueta HttpClient. Mostrar todas las entradas
Mostrando entradas con la etiqueta HttpClient. Mostrar todas las entradas
jueves, 25 de octubre de 2012
viernes, 15 de junio de 2012
Ejemplo basico HttpClient
Genexus y Whois API
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
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
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
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
Etiquetas:
Autentificarse a un Servidor Proxy con Genexus,
Ejemplo basico HttpClient,
Genexus,
Genexus y Whois API,
HttpClient,
Proxy,
www.whoisxmlapi.com,
XMLReader
Suscribirse a:
Entradas (Atom)