![]() |
JSON en Cobol...
1 Archivos Adjunto(s)
Hola Amigos:
Un cliente contrató un servicio web y para enviar y recibir datos (articulos, clientes, pedidos), tengo que utilizar una API que tienen y pasale y recibir parámetros en JSON. Adjunto un pdf con la explicación. Mis conocimientos web son mínimos. Quisiera saber si alguien me puede ayudar como hacer esto. Muchas Gracias. Fito... |
Hola:
Buscando encontré este aporte de Rapinto, me parece que acá está la forma o me equivoco. [Aporte] Ligar ao Site da União Europeia VAT Number - COBOL Foro |
Fito, el JSON no es otra cosa que un formato definido. Sigue tratándose de datos en texto plano. En cuanto a la POST request, efectivamente, se puede adaptar los ejemplos que hay en el foro y hacerlas vía COM/OLE2. Así que, no te será fácil al principio, pero es, según yo, perfectamente realizable.
|
Hola Amigos:
Les cuento que gracias al ejemplo de Rapinto y un poco de google, logré comunicarme con la api. Ahora estoy esperando que me envíen un token valido para empezar a probar a full. Cuando tenga todo listo, voy a subir un ejemplo. Saludos. Fito... ---------- Post añadido : 11:26 ---------- Post anterior : 21:14 ---------- Hola Amigos: Ya logré comunicarme con el webservice, enviarle parámetros y recibir la respuesta. Esa respuesta está en un json, ahora la tarea es "entender" ese json. Hacerlo en Cobol me parece muy complicado. Buscando, buscando y buscando, me topé con esto. [Aporte] Google Maps localización - COBOL Foro Pregunto a lo mejor una burrada, porque estos temas todavía escapan a mi cerebro. De acuerdo a este ejemplo, yo podría trabajar el json en javascript, donde tengo buen manejo de este tipo de dato, pasarlo a un txt tipo tabla, y esa funcion llamarla desde cobol. Estoy muy errado? después leería ese txt desde cobol y santo remedio. Diagn que si, jajajajaja. Saludos. Fito... |
Fito,
Não me parece muito complicado fazer uma rotina para abrir o ficheiro de texto e tentar interpretar : "PH_CODIGO": "02220160513111442", "CL_CODIGO": "01554", "PH_FECINI": "2016-05-13", ....... Se usares o unstring ou o perform varying ... talvez seja fácil, leres a informação que precisas. Un Saludo, Rui Pinto |
Hola Rui:
Sé que se puede hacer con cobol, el tema es el tiempo. Hacer y probar una rutina para interpretar el JSON me va a llevar mucho tiempo, que no tengo. Hay que tener en cuenta niveles, arrays y todas esas cosas. Cuando otros lenguajes lo tienen solucionado de manera sencilla. En windev, por medio de una función (JSONtoVariant()) lo pasas a un array tipo variant y después con bucles anidados vas sacando todo. Por eso hice un exe en windev, que me lea el JOSN que lo grabo en un archivo, lo proceso y lo meto en otro archivo ya con el formato tipo tabla para leerlo desde cobol, trabajarlo así tipo batch. Te pego un ejemplo (esto es una pequeña prueba, tengo que desarrollarlo para darle formato de tabla al txt de salida). Código WinDev:
Muchas gracias por los aportes. Sigo probando y cuando tenga todo listo posteo el resultado. Saludos. Fito... |
Ayuda: desde Power Cobol conectar a una API
Cita:
Me podrán ayudar por favor? Saludos Ana ---------- Post añadido : 15:22 ---------- Post anterior : 12:32 ---------- @Kuk, Help!, me podrás ayudar? :nauf: Saludos Ana |
@AHidalgo, hola.
Qué problema tienes exactamente? Para descargar el JSON o parsearlo? |
@Kuk, hola, gracias por responder, empecemos desde el principio, probé algunas formas de conectarme a la API y aún no me funcionaron, si conoces alguna forma desde cobol directamente te lo agradecería.
Saludos Ana |
@AHidalgo, nunca lo he hecho, pero creo que se podrá hacer de manera similar a esto: [Aporte] Ligar ao Site da União Europeia VAT Number - COBOL Foro
Aquí se trata de WSDL Soap, pasando por la clase COM de PowerCOBOL. Tendrías que mirar ejemplos de cómo trabajar con JSON, pero al fin y al cabo sigue siendo una request HTTP también, o sea que debería funcionar. Amigos, @Josber, @Nitzer, qué opináis? Una vez el JSON obtenido, miraremos cómo parsearlo (creo recordar que hay bibliotecas en el foro, o lo mismo estudiamos cómo hacerlo por Java por ejemplo). |
@AHidalgo, Hola Ana , son pocos los datos que nos has dado , como para ayudarte , ni tampoco cuales son las metodos que has probado....
Pero tenes varias formas de hacerlo , para comunicarte con la api podes hacerlo via clase COM ( WinHttp.WinHttpRequest.5.1) Te paso un ejemplo: Código COBOL:
y la otra para comunicarte puede ser via el control ScriptControl , luego para parsear el JSON que devuelve la api lo lees con la libreria ocx de chilkat Te paso un ejemplo: Código COBOL:
|
@Kuk, Gracias!!, pruebo con eso.
Saludos Ana |
@AHidalgo, échale un vistazo al ejemplo de @fastpho, me parece que es justo lo que necesitas ;)
|
@fastpho, Gracias!!!, sigo probando la conexion con la API, el proveedor no brinda soporte, hay que arreglarse como se pueda.
Pruebo con esto que me pasas y sino les vuelvo a preguntar, mil gracias!! Saludos Ana |
Cita:
A ver, no he tocado JSON, pero yo creo que tienes razón @Kuk, una vez obtenido, lo difícil es el parseo y, supongo que habrán librerías gratuitas para hacerlo, al igual que las habrán para, por ejemplo, los archivos XML Un salu2.- |
@Kuk, @fastpho, gracias ambos por su ayuda!, luego de muuuchas pruebas con la API RestFull del proveedor y de mucho dolor de cabeza, por una lado encontré que la API esta muy mal hecha, tiene muchos errores que no se capturan, incluido cuando una consulta no tiene datos :cens:
Desde la conexión a la API que ni siquiera funciona con cualquiera de los soft que se prueban normalmente las APIs, solamente con la pagina que ellos proveen para pruebas. Por todo lo ante dicho, la única forma que encontré que funciona es: - desde Power Cobol ejecuto un control CmDDE1 con el nombre del archivo BAT. - previo haber generando el bat con un CURL con todos los parámetros solicitados, - me devuelve el token en un texto plano, lo leo desde Power Cobol y guardo. - genero otro bat con el token y la consulta que necesito, - ejecuto nuevamente el bat con un CmDDE1 y guardo en otro archivo plano la respuesta y el estado de la respuesta por si el token caducó y debo generarlo nuevamente. En este punto estoy intentando generar una función que me desglose el JSON de la respuesta (parseo) para guardar los datos en formato cobol. Por casualidad, tienen alguna rutina o función que haga esto?, pregunto para no inventar la rueda. No puedo usar otros soft que lo hagan porque hasta donde he visto son pagos o versión Trial y no me sirve pues esto lo tengo que instalar luego en mi cliente. Quedo al pendiente de sus sugerencias! Saludos Ana |
Cita:
Cita:
|
@Kuk, no lo había visto, gracias!, estuvo mirando las herramientas de chilkatsoft pero son pagas, ahora me fijo lo que pone @fastpho.
Saludos Ana |
1 Archivos Adjunto(s)
@Kuk, @fastpho, hola nuevamente, aquí estoy de vuelta (luego de una gripe familiar), he estado probando con el ActiveX de Chilkat viendo el ejemplo pero no logro que me levante ni la cantidad en array.
Adjunto un ejemplo del JSON que tengo que parsear. En la prueba que hice adapté los texto de acuerdo a mi estructura de datos pero no logré que me levante lo que necesito. Me podrán ayudar? Saludos Ana |
Estimados, desestimen, ya esta resuelto, a veces un buen sueño soluciona todo. :duerme:
Saludos Ana |
El json, como el xml, al final son archivos de texto, como decía @Kuk con un formato establecido, lo que toda la vida hemos llamado "chorizos".
Nosotros los coboleros tenemos la suerte que no hemos necesitado de esos formatos ya que podíamos "mapearlos" con variables. De hecho yo sigo utilizándolo y con bases de datos :). Para la comunicación no os puedo ayudar, en mi equipo tengo gente experta en .net y yo lo que hago es generar el fichero, se lo paso a ellos (me hacen un exe) y me devuelven un valor 0,1 indicando si ha sido todo correcto o no :) |
| La franja horaria es GMT +2. Ahora son las 15:21. |
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.