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

Ejemplo Servicio Rest con Genexus Java

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

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

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
&UrlStringUrlString
&domainNamevarchar
&usernamevarchar
&password varchar
&outputFormat varchar
&AdressProxyvarchar
&UserProxyvarchar
&PassProxyvarchar
&XMLReaderXMLReader
&Vigenciavarchar

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