Files
MBS/WEBSERVICES/testrest/json_test.4gl
T

76 lines
2.9 KiB
Plaintext

IMPORT util
MAIN
DEFINE jstr STRING
DISPLAY "Testing the server from a Genero client ..."
-- esta le da error, y para mi es correcto que de error ya que la estructura del record destino es distinta
LET jstr='{"oper":"respuesta","data":{"usuario":"conecta","clave":"conecta","respuesta":{"num_emp":4489,"nombre":"ADRIAN ANDERSON MENDEZ GONZALEZ","id_pregunta":"ENC001","departamento":"CANTERA VICENTE NOBLE","respuesta":"10","pregunta":"CUAN SATISFECHO USTED SE SIENTE CON EL NIVEL DE SERVICIO DE SU SUPLIDOR INTERNO?"}}}'
CALL propose_type(jstr)
-- este no da error pero al armar el string desde Genero manualmente, hay que poner el doble backslash
LET jstr='{"oper":"respuesta","data":"{\\"credenciales\\":{\\"usuario\\":\\"conecta\\",\\"clave\\":\\"conecta\\"},\\"repuesta\\":{\\"num_emp\\":3355,\\"cedula\\":\\"00104581939\\",\\"nombre\\":\\"JUAN FRANCISCO SOTO CONCEPCION\\",\\"id_pregunta\\":\\"ENC001\\",\\"pregunta\\":\\"CUAN SATISFECHO USTED SE SIENTE CON EL NIVEL DE SERVICIO DE SU SUPLIDOR INTERNO?\\",\\"repuesta\\":\\"1\\",\\"departamento\\":\\"TECNOLOGIA\\"},\\"mensajes\\":{\\"cod_msg\\":0}}"}'
CALL propose_type(jstr)
-- este obviamente no da error ya que arma el string desde los records
CALL arma_jstr() RETURNING jstr
CALL propose_type(jstr)
END MAIN
FUNCTION propose_type(str_in)
DEFINE str_in STRING
DISPLAY "JSON String for the Request: \n", str_in
DISPLAY "Proposed type: \n",util.JSON.proposeType(str_in)
END FUNCTION
FUNCTION arma_jstr()
DEFINE jstr STRING
TYPE t_sync_cmd RECORD -- el formato que espera recibir el server
oper STRING,
data STRING
END RECORD
DEFINE r_cmd t_sync_cmd
DEFINE p RECORD
credenciales RECORD
usuario,clave VARCHAR(50)
END RECORD,
repuesta RECORD
num_emp INT,
cedula,
nombre,
id_pregunta,pregunta,repuesta,departamento STRING
END RECORD,
mensajes RECORD
cod_msg INT,
descripcion STRING
END RECORD
END RECORD
-- arma el record que va a ir a "data"
LET p.credenciales.usuario="conecta"
LET p.credenciales.clave="conecta"
LET p.repuesta.num_emp="3355"
LET p.repuesta.cedula="00104581939"
LET p.repuesta.nombre="JUAN FRANCISCO SOTO CONCEPCION"
LET p.repuesta.id_pregunta="ENC001"
LET p.repuesta.pregunta="CUAN SATISFECHO USTED SE SIENTE CON EL NIVEL DE SERVICIO DE SU SUPLIDOR INTERNO?"
LET p.repuesta.departamento="TECNOLOGIA"
LET p.repuesta.repuesta="1"
LET p.mensajes.cod_msg=0
-- arma el record del request
LET r_cmd.oper="respuesta"
LET r_cmd.data=util.JSON.stringify(p)
CALL util.JSON.stringify(r_cmd) RETURNING jstr
RETURN jstr
END FUNCTION